hej,
część użytkowników ie6 i ie7 ma problem z logowaniem się w mojej aplikacji.
Sprawdziłem dokładnie logi, co jest zapisywane w sesji i sprawa wygląda następująco.
def check_login
… #sprawdzanie czy podane dane sa ok
if @user
session[:user_id] = @user.id
session[:test] = ‘test000’
RAILS_DEFAULT_LOGGER.info('zapisuje zmienna sesyjną ’ + session[:user_id].to_s + ’ test: ’ + session[:test])
redirect_to :action => :show_all
end
end
w efekcie w logach widze:
Processing aaaController#check_login (…) POST
…
zapisuje zmienna sesyjną 300 test: test000
REdirected to actionshow_all
Completed … | 302 Found
Processing aaaController#show_all
zmienna sesyjna: , a test koniec
Completed…
Dlaczego czasami, niektóre wersje IE po przekierowaniu tracą wszystkie zmienne sesyjne zapisane przez aplikacje?
Ani FF, Opera ani Safari nie ma tego problemu.
Zmienne sesyjne są widziane przez przekierowaniem a potem już nie.
A tak na poważnie to jedyne co mogę pomóc to czepianie się słówek. Widze, że “obwiniasz” o błąd przeglądarki a może problem jest gdzie indziej.
Część użytkowników ie6/7 czy wszyscy?
Jeśli wszyscy to problem może faktycznie leżeć po stronie przeglądarki. Jeśli część to masz problem…
Bo przyczyna może być po stronie przeglądarki lub w konfiguracji przeglądarek klientów, w twoim kodzie lub w Railsach. Z tego co mi wiadomo to Railsy mają kilka sposobów przechowywania danych sesji (tak przynajmniej było w 1.2)
Do tego dochodzi możliwość włączania i wyłączania obsługi sesji - może obsługa sesji jest wyłączana “po drodze”?
Przyjrzyj się dobrze konfiguracji i obsłudze sesji w twojej aplikacji - może o czymś zapomniałeś?
A może warto się zastanowić nad przechowywaniem info o sesji w bazie danych zamiast w sesji, jeśli nie uda się znaleźć odpowiedzi na pytanie co jest przyczyną problemów.
Przepraszam, że nie odpowiedziałem konkretnie ale nie mam wielkiego doświadczenia w Railsach a i kod który przedstawiłeś wydaje mi się nie wystarczający do tego, żeby stwierdzić jednoznacznie co jest przyczyną twoich problemów.
Mnie to “pachnie” problemem po stronie serwera… ale moge sie mylić
Zobacz tutaj - co prawda dotyczy PHP ale może coś z tego wywnioskujesz
Przechowywanie info o sesji w bazie lub plikach raczej nie wiele pomoże, ponieważ cookie i tak jest zapisywane u użytkownika.
Sprawdzam obecnie czy problem nie jest po stronie dynamic_session_exp, bo wszystko na to wskazuje, ze nastepuje w dziwnych momentach zgubienie sesji.