2012-03-03 7 views
26

मैं आईआरबी में कुछ डिज़ाइन/डिबगिंग कर रहा हूं और किसी उपयोगकर्ता को लॉगिन करने की आवश्यकता है और फिर मेरे प्रयासों में current_user का उपयोग करने में सक्षम हूं।रेल 3 - आईआरबी कंसोल में आप Devise के current_user तक कैसे पहुंच सकते हैं?

>> ApplicationController.allow_forgery_protection = false 
>> app.post('/sign_in', {"user"=>{"login"=>"some-login-id", "password"=>"some-password"}}) 
>> app.get '/some_other_path_that_only_works_if_logged_in' 
>> pp app.response.body 

नोट::

ब्रायन Deterling के answer एक और सवाल करने से, मैं सफलतापूर्वक प्रवेश और इस क्रम के साथ एक पृष्ठ प्रतिक्रिया उपयोग करने में सक्षम किया गया है। यदि आप एक 200 प्रतिक्रिया आप लॉग इन नहीं हैं मिलता है, तो आप एक सफल लॉगिन इंगित करने के लिए 302 रीडायरेक्ट की आवश्यकता है। टिम सैंटफोर्ड का जवाब देखें।

मैं सत्र की जानकारी प्राप्त करने में सक्षम किया गया है:

1.9.3-p125 :009 > app.session 
=> {"_csrf_token"=>"1yAn0jI4VWzUH84PNTH0lVhjpY98e9echQGS4=", "session_id"=>"89984667d30d0fec71f2a5cbb9017e24"} 

मैं सब कुछ मैं app और app.session के माध्यम से current_user को पाने के लिए प्रयास करने के लिए के बारे में सोच सकते हैं की कोशिश की है, लेकिन कोई किस्मत। मैं current_user कैसे प्राप्त कर सकता हूं?

उत्तर

26

current_user तो app.post('/sign_in', ... के बाद आप अपने रेल कंसोल में app.controller.current_user फोन उपयोगकर्ता वस्तु

+2

मैंने कोशिश की है, और यह वास्तव में काम करता है। – Pierre

+1

मैंने कोशिश की और current_user शून्य है। जब मैं प्रश्न में वर्णित लॉगिन प्रक्रिया करता हूं, तो मुझे 200 प्रतिक्रिया मिलती है और app.session csrf_token देता है, इसलिए मुझे पता है कि मैं ठीक से लॉग इन हूं। app.controller डेटा के पृष्ठों और पृष्ठों के साथ प्रतिक्रिया करता है। लेकिन app.controller.current_user शून्य देता है। मैं डेविस का उपयोग कर रहा हूँ - क्या आप हैं? –

+0

ऐसा लगता है कि app.post पर कुछ बड़े पैमाने पर असाइनमेंट समस्या मेरे लॉगिन को असफल होने का कारण बन रही थी (इस मामले में एक 200 प्रतिक्रिया सफल पोस्ट नहीं है - बहुत भ्रमित है।) एक बार मुझे 302 प्रतिक्रिया मिली, तो app.controller.current_user काम करता है। टिम सैंटफोर्ड के जवाब के बिना मुझे लॉगिन समस्या का पता नहीं लगा होगा। –

4

यह संभव है कि तुम सच में। एक बात प्रवेश करने नहीं कर रहे हैं ध्यान में रखने की है हो सकता है पाने के लिए कर सकते हैं नियंत्रक की संपत्ति है वह डेविस मैं वार्डन के शीर्ष पर बना हूं जो रैक मिडलवेयर है।

मैंने ऐप पर लॉग इन करने की अपनी app.post विधि को आजमाया है जिसका उपयोग मैं उस पर काम कर रहा हूं। लॉगिन पेज पर पोस्ट करने और 302 रीडायरेक्ट करने के बाद app.session वार्डन उपयोगकर्ता आईडी दिखाया गया। जब मैं लॉग आउट

>> current_user = User.find(app.session["warden.user.user.key"][1][0]) 

और उसके बाद मैं एक 200 और फिर app.session याद आ रही है एक बुरा पासवर्ड से लॉग इन करने की कोशिश की:

>> app.session 
{ 
"_csrf_token"=>"dT0/BqgLb84bnE+f1g...", 
"warden.user.user.key"=>["User", [42843], "$2a$10$1OU.1BixIba..."], 
"session_id"=>"0dd49c05ff4e6362c207c6eb877f86cd" 
} 

मैं इस तरह उपयोगकर्ता लाने के लिए कर रहा था वार्डन उपयोगकर्ता की जानकारी और केवल आपके उदाहरण की तरह सीएसआरएफ टोकन और सत्र आईडी शामिल है।

बीटीडब्लू: एक बार लॉग इन app.controller.current_user तब भी शून्य था जब वार्डन उपयोगकर्ता आईडी सत्र में थी।

+0

टिम - 200 बनाम 320 अंक को इंगित करने के लिए धन्यवाद। मैंने अपनी सादगी के कारण सुगा का जवाब चुनने का फैसला किया, हालांकि मैंने तुम्हारा परीक्षण किया और यह भी काम करता है। क्षमा करें मैं दोनों का चयन नहीं कर सकता। –

+0

कोई समस्या नहीं है। मुझे नहीं पता था कि आप अपने प्रश्न से पहले इस तरह ऐप ऑब्जेक्ट का उपयोग करके लॉगिन कर सकते हैं, इसलिए मैं जवाब देकर कुछ सीखता हूं। –

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