2012-12-12 68 views
8

我已經使用flask-login進行了認證工作,但似乎無論我在燒瓶中使用cookie的持續時間如何,會話仍會通過身份驗證。我是否正確設置了燒瓶登錄的配置變量?我試過flask-login:Chrome忽略cookie過期?

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

即使我關閉瀏覽器,等一會兒,然後點擊一個應該受到保護的網址,我仍然可以訪問它。這與this issue with chrome?有關。如果我清除了我的cookies,我會得到預期的登錄頁面。所有這些讓我認爲cookie超時沒有得到尊重。

另外,PERMANENT_SESSION_LIFETIME在燒瓶中做什麼?

回答

17

REMEMBER_COOKIE_DURATION用於「記住我」功能,即,即使他關閉了瀏覽器,也要記住登錄用戶需要多長時間。單獨的cookie用於此目的,其名稱可由REMEMBER_COOKIE_NAME(默認爲remember_token)設置。要強制登錄會話一段時間(即使瀏覽器仍然保持運行)後到期,設置PERMANENT_SESSION_LIFETIME的地方在那裏你把你的應用程序設置:

PERMANENT_SESSION_LIFETIME = datetime.timedelta(minutes=30) 

而在你登錄視圖設置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

謝謝!添加session.permanent做了詭計! – reptilicus