如果会话过期,如果没有活动并重定向登录页面,则烧瓶注销

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_lifetimesession.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 添加后我无法登录,它一直重定向到登录页面。

以上是关于如果会话过期,如果没有活动并重定向登录页面,则烧瓶注销的主要内容,如果未能解决你的问题,请参考以下文章

如果 keycloak 会话过期,我如何重定向到登录页面?

不活动后重定向用户,但保持会话活动

Java Web 应用程序中的会话过期时如何重定向到登录页面?

单击注销按钮终止会话并重定向到登录页面

Django 会话表单(临时保存表单)

登录responsinator.com时出现“页面因不活动而过期。请刷新并重试”