2012-06-03 16 views
5

में लॉग इन है या नहीं, मेरे पास एक साइनइन लाइटबॉक्स है जिसे उपयोगकर्ता लॉग इन नहीं होने पर दिखाया जाना चाहिए। लाइटबॉक्स जावास्क्रिप्ट, फैंक्सबॉक्स में पूरी तरह कार्यान्वित किया गया है और एचटीएमएल के लिए रेल आंशिक उपयोग करता है।मैं कैसे जांचूं कि उपयोगकर्ता जावास्क्रिप्ट

मैं देख सकता हूं कि कुकी लॉग इन होने पर क्रोम में सेट है, लेकिन document.cookie खाली लौटने लगता है। कारण शायद here

मैं जावास्क्रिप्ट/क्रिया में इसे कैसे प्राप्त करूं।

+3

क्या किसी के पास वास्तव में नीचे सूचीबद्ध दोनों उत्तरों के विपरीत, इसके लिए जेएस-आधारित उत्तर है? – lulalala

+0

शायद असंभव है। Http://stackoverflow.com/a/29739169/6594668 देखें या इसके बजाय कुकीज़ का उपयोग करें। – prograils

उत्तर

2

बैकएंड में इसे संभाल लें। यदि आप रेल के साथ ऐसा कर रहे हैं, तो current_user का उपयोग और दुरुपयोग सुनिश्चित करें, क्योंकि यह आपका सबसे अच्छा दोस्त होगा।

अपने आंशिक में

फिर, आप इस

<% if current_user %> 
    <p>Welcome <%= current_user.username %>!</p> 
<% else %> 
    <p>Please <%= link_to 'sign in', login_path %></p> 
<% end %> 

रेल सत्र की तरह कुछ है करने के लिए स्वतंत्र हैं, Ruby on Rails Tutorial

+0

धन्यवाद, मैं फॉर्म सबमिशन पर लाइटबॉक्स दिखाना चाहता हूं। यह पहले से ही काम कर रहा है। जब उपयोगकर्ता लॉग इन करता है, तो मुझे मूल फ़ॉर्म को बिना किसी उपयोगकर्ता इंटरैक्शन के सबमिट करना होगा। AJAX लॉगिन कॉल एक कुकी जोड़ता है। आपके द्वारा उल्लिखित विधि का उपयोग करके, मुझे यह जानने के लिए पृष्ठ को रीफ्रेश करना होगा कि उपयोगकर्ता ने मूल फ़ॉर्म सबमिट करने में सक्षम होने के लिए लॉग इन किया है या नहीं। – ShaggyInjun

+0

जब पृष्ठ को रीफ्रेश किया जाता है तो फॉर्म डेटा खो जाता है जब तक कि मैं फॉर्म डेटा को ब्राउजर मेमोरी में सहेजने का जटिल मार्ग नहीं लेता और पेज लोड होने पर फॉर्म को वापस भरता हूं। यदि मैं कुकी की जांच करने में सक्षम हूं, तो यह आसान होगा। परियोजना में बाकी सक्षम है। क्या कोई मज़ेदार सत्र नियंत्रक विधि है कि मैं उपयोगकर्ता को लॉग इन करने के लिए AJAX कॉल कर सकता हूं? – ShaggyInjun

+0

@ShaggyInjun ठीक है मुझे लगता है कि मुझे पता है कि आप क्या पूछ रहे हैं। क्या आप लाइटबॉक्स छिपाने से पहले लॉग इन क्रेडेंशियल्स सही हैं या नहीं? यदि ऐसा है, तो जब आपका प्रोग्राम प्रतिसाद देता है (AJAX के साथ) "हाँ, ये प्रमाण-पत्र सही हैं," आप आवश्यक उपयोगकर्ताडेटा भी भेज सकते हैं, फिर शेष जावास्क्रिप्ट के साथ संभाल लें। हो सकता है कि कुछ $ '('# स्वागत')। टेक्स्ट (data.username); 'और यदि आपका लाइटबॉक्स एक फॉर्म': remote => true' है, तो आप इसे 'create.js.erb' के साथ' 'एप्लिकेशन/विचारों/sessions'। यह निर्भर करता है कि आपका एप्लिकेशन किस प्रकार संरचित है। –

2

जॉर्डन तराजू के रूप में ही दृष्टिकोण कहा, लेकिन यह सरल बनाने ... DRYing if @current_user.nil?

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