2012-04-26 7 views
15

session["session_id"]User में लॉग इन करना संभव है, जो उस सत्र से संबंधित है?मैं अपने सत्र आईडी द्वारा एक समर्पित उपयोगकर्ता कैसे ढूंढ सकता हूं?

+0

आप इसके बजाय User.current_user का उपयोग कर सकते हैं ... क्या आपने कोशिश की? –

उत्तर

23

कम से कम मेरी सिस्टम पर (रेल 3.2, वसीयत 2.0.4), तो आप इसे इस तरह कर सकते हैं:

session है:

{"session_id"=>"be02f27d504672bab3408a0ccf5c1db5", "_csrf_token"=>"DKaCNX3/DMloaCHbVSNq33NJjYIg51X0z/p2T1VRzfY=", "warden.user.user.key"=>["User", [3], "$2a$10$5HFWNuz5p6fT3Z4ZvJfQq."]} 

session["warden.user.user.key"][1][0], तो 3 है।

तो, मैं इसे पाते हैं के रूप में:

User.find(session["warden.user.user.key"][1][0]) 
+10

रेल 4.2.1 पर, डेविस 3.4.1 आप User.find (सत्र ["warden.user.user.key"] [0] [0]) –

+0

धन्यवाद का उपयोग करना चाहेंगे। यह उदाहरण बदसूरत है, लेकिन यह काम करता है। एक बार फिर धन्यवाद। कुकीज़ के लिए यह उदाहरण: http://stackoverflow.com/a/43549108/5754223 – artamonovdev

3

मुझे यकीन है कि आप क्या हासिल करने की कोशिश कर रहे हैं, लेकिन आप वर्तमान सत्र की केवल उपयोगकर्ता चाहते हैं

जवाब देने की कोशिश करेंगे नहीं कर रहा हूँ , एक आसान तरीका, सत्र पर अपने आईडी स्टोर करने के लिए उदाहरण के लिए होगा:

def login(username, pass) 
    # do the usual authentication stuff and get user 
    if logedin 
    session[:user_id] = user.id 
    end 
end 

तो वर्तमान उपयोगकर्ता होगा मिल कुछ की तरह

+०१२३५१६४१०६
current_user =User.find(session[:user_id]) 

आप क्या चाहते हैं सभी उपयोगकर्ताओं है कि वर्तमान में लॉग इन कर रहे हैं ढूँढने जाता है, तो मैं तुम्हें, डीबी पर सत्र को बचाने के लिए अपने अनुप्रयोग विन्यास के लिए की जरूरत है क्योंकि पूर्वनिर्धारित कि सत्र डेटा है ब्राउज़र में कुकीज़ में दुकान है लगता है । इस बारे में अधिक जानकारी के लिए इस उत्तर जाँच How to track online users in Rails?


संपादित करें: बस आप वसीयत का उपयोग कर रहे देखा तो पहले जिस तरह से आप के लिए वास्तव में नहीं है। आपको किसी भी नियंत्रक पर current_user विधि को कॉल करने की आवश्यकता है। दूसरी तरफ इस उत्तर की जांच करें "Who's Online" using Devise in Rails

संबंधित मुद्दे