2010-09-26 16 views
5

Oturum deposu için memcached kullanmak üzere yapılandırılmış Rails 3 çalıştırıyorum. Aşağıdaki kurulum var:Raf oturum anahtarı, memcached için çok uzun

development.rb

config.cache_store = :mem_cache_store

herhangi gittiğimde, uygulama cezası başlayabilir

Foo::Application.config.session_store :mem_cache_store, :key => '_foo_session'

session_store.rb sayfa Şu hatayı alıyorum:

ArgumentError (key too long "rack:session:__really_long_session_key__"):

Memnuniyetli anahtardaki sınırın 255 olduğunu anlıyorum. Bunu nasıl aşabilirim, yoksa yanlış bir şey mi yapıyorum?

cevap

9

Neredeyse kesinlikle bunu görüyorsunuz çünkü kurabiye dükkanından memcached'e geçiyorsunuz. Tarayıcınız hala uzun kimliğe sahip eski oturum çerezine sahip. Bu çerezi tarayıcınızdan silmeniz gerekiyor ve sorun gider.

Çerez deposundan bir üretim sitesinde memcached'e geçiş yapıyorsanız, kullanıcının tarayıcınız üzerinde denetiminiz olmadığı için bu bir sorun olacaktır. Bu durumda sorunlardan kaçınmak için oturum anahtarını değiştirmeniz gerekecektir.

0

"Anahtarınız" 255 karakterden fazlaysa, yanlış bir şey yaptığınız anlaşılıyor. Oturum anahtarınız neden bu kadar uzun? MD5 veya SHA1 ile ilgili sorun nedir?

+0

Bu oturum anahtarının nereden geldiğini anlayamıyorum. Uygulamamda herhangi bir yerde belirtilen hatada gösterilen bu oturum anahtarına sahip değilim. Anahtar değil miydi?: Anahtar => '_foo_session' değil mi? –

+0

@Jay Bala - Nerede kurulduğundan tam olarak emin değilim .. Hiç Raf kullanmadım –

1

Çerez deposundan geçiş yapabildiniz veya aynı etki alanında (ör., Localhost) başka çerez oturum deposu uygulamaları çalıştırıyor musunuz?

Bu durumda cookie oturum deposu büyük session_id dizesinden sorumludur (çünkü tüm oturumu gerçekte saklar). Sadece oturum çerezini silin ve iyisin.

İlgili konular