2011-03-03 27 views
7

Raf Oturumu Havuzu kullanıyordum, ancak kullanıcılarımız oturum verilerinin süresinin dolmasını sağlayarak bir web sunucusunun iş parçacığını bir diğerine atacaktı. Sinatra'da oturumları etkinleştirerek başladım, ancak Sinatra'yı kullanarak mutli uygulamalara sahip olduğum için bunu kullanamıyorum (aynı anahtarın kullandığı aynı anahtar - bunun aynı ana bilgisayardan kaynaklanıp kaynaklanmadığından emin değil)Raf Oturumu Çerez ve Sinatra - ayarlama ve verilere erişme

Uygulamaların birbiri artacağı için, şimdi Raf Oturumu Çerezini deniyorum ve değişkenleri (enable: oturumlar ile aynı şey, ancak değişkenleri ayarlayabilirsiniz) ayarlamayı deniyorum.

Harika, işte bu yüzden! Ama şimdi Raf Oturum Havuz ve in, oturum verileri bunu kullanıyordum şekilde erişemez sağlar: İlk oturum verilerine erişebilir neden oturumları

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

anladınız ...

Soru olduğunu Havuz ve Sinatra'daki oturum [: kullanıcı] ile etkinleştirin: oturumlar, ancak Raf Oturumu Çerezinde değil? Ben bir şey eksik miyim?

biraz daha test mü ve aslında ancak en kısa sürede bir hamle olarak, oturum değişkeni koyarak oluyor bulundu:

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

DÜZENLEME config.ru

altında yapıyorum tek şey yeni yöntem veya oturum değişkeni yeniden yönlendirme düştü (4KBs ?! daha gerçekten büyük bu çerez) gibi görünüyorsa - bu olanak, çünkü olamaz: oturumları gayet güzel çalışıyor İşte

+0

Her istek için request.cookies dökümü ve şüpheli bir şey bulup bulamayacağınıza bakın. – Zimbabao

cevap

10

Bu sorunu çözmek için did:

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

Yukarıdakilerden farkı görüyor musunuz? - Etki Alanı Yok, eğer Rack :: Session :: Cookie alan adını veya tarayıcıyı (kim yaparsa) belirlesem, mutliple Sinatra/Rack uygulamaları arasında hatam yok ...

+0

Bu, çok güvensiz değil midir? – include

+0

Sadece gerçek bir kimlik doğrulama/yetkilendirme verisi olmayan bir çerez ise o zaman, sadece ayar oturumlarınız ve bazı verileri – nictrix

+0

içine koyarak aynı sorunu yaşıyorum ve çözümünüzü denedim. Ama şimdi, ne yaparsam yapsın 'oturumu karmaşa'; p seansı; end 'sadece '{" session_id "=>" b59 ... "}' gösterir. –

2

Sorun, 'localhost ile ilgilidir. '. domain işe yaramaz olarak neden localhost sahip olarak bu konuya yazılmış ayrıntılarda açıklar: Cookies on localhost with explicit domain

bir düzeltme hosts etki alanı

127.0.0.1 superduper.dev 

gibi dosya kurulum olacaktır Sonra da etki alanını ayarlamak senin oturum ayarları superduper.dev. Ardından geliştirme sırasında ihtiyacınız olabilecek portlara gidebilirsiniz. Ör. superduper.dev:5000

İlgili konular