2011-03-03 14 views
7

मैं रैक सत्र पूल का उपयोग कर रहा था, हालांकि मेरे उपयोगकर्ता एक वेबसर्वर थ्रेड को दूसरे डेटा पर डेटा डेटा समाप्त करने के लिए लात मार देंगे। मैंने बस सक्षम करने के साथ चारों ओर घूमना शुरू कर दिया: सिनात्रा में सत्र, हालांकि मैं इसका उपयोग करने में असमर्थ हूं क्योंकि मेरे पास सिनात्रा का उपयोग करने वाले मल्टीप्ल एप्स हैं (यह वही कुंजी है जिसका उपयोग यह प्रतीत होता है - यह सुनिश्चित नहीं है कि यह इसलिए है क्योंकि यह वही होस्ट है या नहीं)रैक सत्र कुकी और सिनात्रा - डेटा को सेट करने और एक्सेस करने के लिए

इसलिए चूंकि मेरे ऐप्स एक-दूसरे को तोड़ देंगे, इसलिए मैं रैक सत्र कुकी की कोशिश कर रहा हूं और चर सेट कर रहा हूं (सक्षम है: सत्र, लेकिन आप चर सेट कर सकते हैं)

बढ़िया काम करता है! लेकिन अब मैं सत्र डेटा, जिस तरह से मैं इसे उपयोग कर रहा था उपयोग नहीं कर सकते रैक सत्र पूल में और में सक्षम: सत्र

session[:user] = nick 
puts session[:user] 

आप अंदाजा हो ...

प्रश्न कारण है कि मैं सत्र डेटा का उपयोग कर सकते है पूल और सिनात्रा में सत्र [: उपयोगकर्ता] के साथ सक्षम: सत्र, लेकिन रैक सत्र कुकी में नहीं? क्या मुझे कुछ याद आ रही है?

कुछ और परीक्षण किया और पाया कि यह वास्तव में, सत्र चर में डालने है लेकिन जैसे ही यह एक करने के लिए ले जाता है: सभी मैं कर रहा हूँ

नीचे

config.ru

use Rack::Session::Cookie, :key => 'key', 
          :domain => "localhost", 
          :path => '/', 
          :expire_after => 14400, # In seconds 
          :secret => 'secret' 

संपादित है नई विधि या सत्र चर पुनर्निर्देशन गिरा दिया जाना (इस कुकी वास्तव में 4KBs ?! से बड़ा है) दिखाई देता है - इसे सक्षम नहीं किया जा सकता है क्योंकि: सत्र बस ठीक काम करता है

+0

बस प्रत्येक अनुरोध के लिए request.cookies डंप करें और देखें कि क्या आप कुछ संदिग्ध पा सकते हैं। – Zimbabao

उत्तर

10

यहाँ है कि मैं क्या इस समस्या को दूर करने के लिए किया था है:

use Rack::Session::Cookie, :key => 'my_app_key', 
          :path => '/', 
          :expire_after => 14400, # In seconds 
          :secret => 'secret_stuff' 

क्या आप उपरोक्त से अंतर देखते हैं? - कोई डोमेन नहीं, अगर मैंने रैक :: सत्र :: कुकी को डोमेन या ब्राउज़र निर्दिष्ट किया है (जो भी करता है), मुझे mutliple Sinatra/Rack ऐप्स के बीच कोई त्रुटि नहीं है ...

+0

क्या यह अनुमोदन बहुत असुरक्षित नहीं है? – include

+0

यदि यह केवल एक कुकी है जिसमें कोई वास्तविक प्रमाणीकरण/प्रमाणीकरण डेटा नहीं है, तो नहीं, आपके बस सेटिंग सत्र और इसमें कुछ डेटा डालना – nictrix

+0

मुझे एक ही समस्या है और आपके समाधान क्रिया का प्रयास किया है। लेकिन अब, इससे कोई फर्क नहीं पड़ता कि मैंने 'सत्र' हैश में क्या रखा है, 'पहले करने से पहले; पी सत्र; एंड 'केवल' {"session_id" => "b59 ..."} दिखाता है। –

2

समस्या डोमेन 'localhost के साथ है '। यह धागा और विवरण का वर्णन करने के लिए के रूप में के रूप में डोमेन कार्य नहीं करेगा क्यों स्थानीय होस्ट था: Cookies on localhost with explicit domain

फिक्स अपने मेजबान में एक डोमेन की तरह

127.0.0.1 superduper.dev 

फ़ाइल सेटअप करने के लिए किया जाएगा तो फिर में अपने डोमेन सेट अपने superduper.dev करने के लिए सत्र सेटिंग्स। फिर विकास के दौरान आप जो भी बंदरगाह हो सकते हैं, उस पर जा सकते हैं। पूर्व। superduper.dev:52000