2013-09-28 16 views
5

Próbowałem nauczyć się Flask, a po drodze rozszerzyć logowanie Flask. Mogę wykonać podstawowe uwierzytelnianie zgodnie z oczekiwaniami. Problem, który mnie wprawił w zakłopotanie, dotyczy ustawienia "Pokaż moje okna i karty od ostatniego czasu" w Firefoksie i ustawienia "Kontynuuj, gdzie skończyłem" w Chrome. Wszystkie badania przeprowadzone w tej witrynie i innych miejscach wskazują, że te ustawienia powinny działać tylko w przypadku otwartych kart. Więc jeśli jesteś uwierzytelniony, a następnie zamknij kartę, a następnie zamknij przeglądarkę, przeglądarka powinna przywracać pliki cookie "tylko sesja" dla kart otwartych po zamknięciu przeglądarki. Jednak zarówno w przeglądarce Firefox, jak i Chrome plik cookie "tylko sesja" jest nadal aktywny po ponownym uruchomieniu przeglądarki i przechodzę do strony oznaczonej jako @login_required. Powinienem także wspomnieć o tym, że przekazuję False do argumentu zapamiętującego login_user: tak: login_user(user, remember=False)Flask-Login: Jak zmusić Firefox/Chrome do usunięcia pliku cookie sesji po zamknięciu karty?

Grałem z ideą świeżych loginów z rozszerzeniem Flask-Login myśląc, że zamknięcie zakładki przed zamknięciem przeglądarki z pewnością oznaczałoby sesja stała się nieaktualna, ale tak się nie dzieje. Sprawdzam wartość login_fresh(), która zwraca wartość true, jeśli logowanie jest świeże i nadal zwraca wartość True.

Dowiedziałem się, jak sprawić, aby logowanie wygasło po określonym czasie, używając session.permanent = True, a następnie ustawiając app.permanent_session_lifetime = 'so many minutes/seconds', który działa idealnie, ale nie jest to, czego chcę.

Mogę żyć z tym, że Firefox/Chrome zapamięta sesyjne pliki cookie dla otwartych kart, ale nie rozumiem, dlaczego zapamiętują sesyjne pliki cookie mojej witryny, nawet jeśli karta jest zamknięta przed zamknięciem przeglądarki . Czy to oczekiwane zachowanie? Czy można się spodziewać, że plik cookie sesji zostanie usunięty z mojej strony, gdy najpierw zamknę kartę, a potem przeglądarkę?

Odpowiedz

3

Czy to oczekiwane zachowanie? Czy można się spodziewać, że plik cookie sesji zostanie usunięty z mojej strony, gdy najpierw zamknę kartę, a potem przeglądarkę?

Podobno tak, to jest oczekiwane zachowanie, a nie, nie można oczekiwać takiego czegoś. Obserwowane zachowanie wydaje się być świadomą decyzją projektową w sposobie, w jaki przeglądarki realizują funkcję "przywracania sesji".

  • Zobacz ten Firefox bug from 2009(eternalsession) Sesja przywracania może spowodować nadmierne cookie sesji żywotności który ma wiele duplikatów i żadnego rozwiązania.
  • Albo ten Chromium bug from 2012Session Cookies nie skasowany, gdy procesy Chrome zamknięte ze statusem WontFix

Więc, krótko mówiąc, nie sądzę, że coś można zrobić to po stronie serwera, nie ważne, jak niesamowita kolba to :(

1

Co dzień mówi, że jest na miejscu i your expectations should be correct. Niemniej jednak może dojść do obejścia.

Możesz użyć sesji stałej o krótkim czasie życia (PERMANENT_SESSION_LIFETIME) i odświeżyć jej czas życia przy każdym żądaniu (SESSION_REFRESH_EACH_REQUEST).

Myślę, że jest to raczej nowa konfiguracja (0.10 IIRC).

Powiązane problemy