Kimlik doğrulaması için kullanılan bir uygulamayı kullanıyorum. Nginx üstüne yolcu ile rubi 1.9.2, 3 rails.Oturumlar geçiyor. Ruby on Rails
İşte benim problem: Ben occaisionally benim oturumları geçti alıyorsanız fark ettik. Tek bir kullanıcı olarak oturum açarken, bazen başka bir kullanıcı olurum. Bu gerçekten korkunç bir sorundur. Active_record oturumları depolamayı kullanarak durmayı başardım. Ama nerede olabileceğine dair söylediklerim var. Çerez depolama alanı ve memcached depolama alanı kullanılır. Hata ayıklamaya nereden başlayacağımı bilmiyorum. Tüm kodlarımı geçtim ve sadece 'current_user' yazmayı okumuyorum. Oturumda herhangi bir kod depolama öğesi yok.
herkes nereye doğru Bana öneri verebilir veya bu oluyor olabilir nasıl?
Güncelleme:
ben kurulum her istek üzerine oturumu, içindekileri dökmek için sayfanın en üstünde bir div. Sadece kullanıcı geçişi değil, tüm oturum. Ne olacağını görmek için oturuma koyduğum bazı kukla değişkenler var. Oturumlar geçildiğinde, (Kullanıcı A, Kullanıcı B olur) Kullanıcı A, şimdi B Kullanıcı'sının sahip olduğu kukla değişkenleri görür. Ve B kullanıcısı çıkış yaptı.
GÜNCELLEME aynı sorunu tam açıklanır burada yığın taşması üzerine başka bir soru bulundu
2: Bir yolcu sorun olabilir gibi görünüyor In Rails, what could cause a user to have another user's session?
? Ama daha da önemlisi, nasıl oluyor da oluyor? Bu bir REAL büyük bir sorundur. Buna nasıl dururuz? Şimdi benim app hizmet etmek Unicorn kullanıyorum 3
GÜNCELLEME. Config.threadsafe'yi ayarlıyorum! ve sadece aktif kayıt oturumlarını kullanmaya başladı. Daha fazla memcached oturumları yok. Sorun gitti. En azından güvenlik deliği tıkalı olduğundan saçlarımı çekmeyi bırakabilirim.
Tam olarak neyin neden kaynaklandığını bilmek isterim. Dışarıdaki öğreticilerin çoğu, varsayılan yumurtlama yöntemiyle yolcuyu nasıl ayarlayacağını gösterir. Doğal olarak, memcached'in diğer yöntemlerde oturum yönetimi için en iyi performansı olacağını düşünürdüm. Özellikle çoklu uygulama sunucu ortamında.
Güncelleme 4
Okay son ve nihai güncelleme. Bu aynı memcached bağlantıyı kullanarak çatallı süreçleri ile ilgili bir sorundu. Ben dalli memcached istemcisi kullanarak ve tek boynuzlu at ya da yolcunun after_fork geri aramada bağlantıyı yeniden düzenleyerek sabitledim.
, aynı tarayıcıdan farklı kullanıcılara kullanıyor musunuz? Yoksa son zamanlarda kullanmadığınız tamamen rastgele bir kullanıcı mı? –
Aynı tarayıcıda ayrı kullanıcılarla giriş yapmadı. Bu ayrı ağlarda bile olur. Kullanıcı A, Kullanıcı B olabilir. Ayrı konumlarda olsalar bile. Rastgele olur ve bulduğum tek şey, her ikisinin de olması için giriş yapmaları gerektiğidir. – demersus
Yolcu meselesi olabilir mi? Tasarlama/yönetme current_user değişkenini önbelleğe alır mı? – demersus