2012-12-12 9 views
8

Mam uwierzytelnianie współpracujące z loginem w kolbie, ale wygląda na to, że niezależnie od tego, czego używam do czasu trwania ciasteczka w butelce, sesja jest nadal uwierzytelniana. Czy ustawiam zmienne konfiguracyjne poprawnie do logowania w kolbie? Próbowałemflask-login: Chrome ignoruje wygaśnięcie ciasteczka?

app.REMEMBER_COOKIE_DURATION = datetime.timedelta(seconds=30) 
app.config["REMEMBER_COOKIE_DURATION"] = datetime.timedelta(seconds=30) 

Nawet jeśli zamknę przeglądarkę, poczekać, i uderzył w URL, które powinny być chronione, mogę nadal do niego dostęp. Jest to związane z this issue with chrome?. Jeśli wyczyszczę pliki cookie, otrzymam oczekiwaną stronę logowania. Wszystko to sprawia, że ​​myślę, że limit czasu dla cookie nie jest przestrzegany.

Co robi PERMANENT_SESSION_LIFETIME w butelce?

Odpowiedz

17

REMEMBER_COOKIE_DURATION służy do funkcji "Zapamiętaj mnie", czyli do tego, jak długo należy pamiętać zalogowanego użytkownika, nawet jeśli zamknął przeglądarkę. W tym celu wykorzystywany jest oddzielny plik cookie, którego nazwę można domyślnie ustawić na REMEMBER_COOKIE_NAME (remember_token). Aby wymusić sesji logowania wygasa po pewnym czasie (nawet jeśli przeglądarka jest nadal biegł), ustaw PERMANENT_SESSION_LIFETIME gdzieś, gdzie trzymasz swoje ustawienia aplikacji:

PERMANENT_SESSION_LIFETIME = datetime.timedelta(minutes=30) 

A w widoku logowania ustawić session.permanent = True:

from flask import session 

@app.route('/login') 
def login(): 
    # ... 
    if login_user(user): 
     session.permanent = True 
     return redirect(request.args.get('next') or url_for('index')) 
    # ... 
+0

Dziękuję! dodanie session.permanent zrobiło lewę! – reptilicus