session["session_id"]
verildiği zaman, oturumun ait olduğu User
girişini bulmak mümkün mü? En azından benim sistemdeBir planlama kullanıcısını oturum kimliğine göre nasıl bulabilirim?
cevap
(3.2 raylar, 2.0.4 hazırlamak), bunu şöyle yapabilirsiniz:
session
geçerli:
{"session_id"=>"be02f27d504672bab3408a0ccf5c1db5", "_csrf_token"=>"DKaCNX3/DMloaCHbVSNq33NJjYIg51X0z/p2T1VRzfY=", "warden.user.user.key"=>["User", [3], "$2a$10$5HFWNuz5p6fT3Z4ZvJfQq."]}
session["warden.user.user.key"][1][0]
ardından 3
olduğunu. Ne başarmak için çalışıyoruz ancak geçerli oturumdaki sadece Kullanıcıyı istiyorsanız
cevap çalışacağım emin değilim
User.find(session["warden.user.user.key"][1][0])
Raylar Üzerinde 4.2.1, Devise 3.4.1 User.find kullanmak istersiniz (session ["warden.user.user.key") [0] [0]) –
Teşekkürler. Bu örnek çirkin, ama işe yarıyor. Tekrar teşekkürler. Çerezler için bu örnek: http://stackoverflow.com/a/43549108/5754223 – artamonovdev
: olarak
Yani, bunu bulmak istiyorum , basit bir şekilde, örneğin oturumda yaptığı id saklamak için olacaktır:
def login(username, pass)
# do the usual authentication stuff and get user
if logedin
session[:user_id] = user.id
end
end
Sonra geçerli kullanıcı olacağını olsun bir şey
gibicurrent_user =User.find(session[:user_id])
giriş yapmış olan tüm kullanıcıları bulmaktır istediğini olsam, o oturumun veri deposu tarayıcısında tanımlama olduğunu önceden tanımlanmış, çünkü db oturumu kaydetmek için uygulamanızı yapılandırma için gerek . Bu konuda daha fazla bilgi için Bu cevap How to track online users in Rails?
EDIT kontrol edin: Sadece hazırlamak kullandığınız fark böylece ilk yolu sizin için aslında yoktur. Herhangi bir denetleyicide current_user
yöntemini aramanız yeterlidir. İkinci yol için bu yanıtı kontrol edin "Who's Online" using Devise in Rails
Bunun yerine User.current_user kullanabilirsiniz ... denediniz mi? –