如果会话过期,如果没有活动并重定向登录页面,则烧瓶注销
Posted
技术标签:
【中文标题】如果会话过期,如果没有活动并重定向登录页面,则烧瓶注销【英文标题】:Flask logout if sessions expires if no activity and redirect for login page 【发布时间】:2017-02-04 16:58:49 【问题描述】:我对烧瓶非常陌生,并尝试使用烧瓶更新网站,用户拥有帐户并能够登录。如果超过 10 分钟没有活动,我想让用户会话过期并注销,并将用户重定向到登录页面。
我想在@app.before_request 中更新它,下面是我的代码。我如何更新它请建议。 检查登录时间并检查是否没有活动然后注销。
@app.before_request
def look_for_user(user=None):
g.usr =
g.api = False
if user:
g.usr = user
if 'user_id' in session:
g.usr = get_user((session['user_id'])) //from db
if not g.usr:
g.usr =
if not g.usr:
if request.url_rule:
if request.url_rule.rule not in app.config['LOGIN_NOT_REQUIRED']:
session['postlogin_landing_page'] = request.path
if g.api:
return jsonify(error=True, error_message='Invalid Login/Token')
else:
return redirect(app.config['LOGIN_URL'])
elif 'login_page' in session and request.url_rule:
if request.url_rule.rule not in app.config:
landing_page = session.pop('login_page')
return redirect(landing_page)
【问题讨论】:
你可以使用cookie模块吗?也许每个页面加载都可以检查存储的 cookie,如果它仍然有效,则设置一个有效期为 10 分钟的新 cookie。否则,它不会继续加载页面,而是注销并重定向到登录页面。 【参考方案1】:解决您的问题,为此您必须导入 datetime.timedelta 库
session.permanent = True
app.permanent_session_lifetime = timedelta(seconds=3)
session.modified = True
【讨论】:
【参考方案2】:您可以使用permanent_session_lifetime
和session.modified
标志,如this question 中所述。
请注意,默认情况下会话不是永久的,需要使用session.permanent = True
激活,如this answer 中所述。
【讨论】:
我正在尝试相同的设置 app.permanent_session_lifetime = timedelta(minutes=2) ,但它没有发生。 ?不知道我哪里错了。我是否需要在某处设置永久会话时间。然后使用 session.modified ? 如此 [链接](***.com/questions/11783025/…) 中所建议的那样更改并添加:@app.before_request def make_session_permanent(): session.permanent = True app.permanent_session_lifetime = timedelta(minutes=5) 会话。 modified = True 添加后我无法登录,它一直重定向到登录页面。以上是关于如果会话过期,如果没有活动并重定向登录页面,则烧瓶注销的主要内容,如果未能解决你的问题,请参考以下文章