2012-12-12 67 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