首页 > 解决方案 > 烧瓶会话注销并重定向到登录页面

问题描述

我正在为我的 Web 应用程序使用 Flask、Python。用户将登录,如果会话时间超过 5 分钟,那么应用程序应该会出现并且应该登陆登录页面。

我尝试了一些方法,我可以看到会话超时正在发生,但重定向到登录页面没有发生。

@app.before_request
def before_request():
    "Session time out method"

    flask.session.permanent = True
    app.permanent_session_lifetime = datetime.timedelta(minutes=2)
    flask.session.modified = True
    flask.g.user = flask_login.current_user
    #return redirect(url_for('login'))

我已经使用 before_request 来查看超时。如果没有活动和重定向登录页面,我已经推荐了这个链接Flask logout if session expires 但我没有看到我之前尝试过的内容和这段代码有任何变化。我可以在那里看到很多关于这个主题的 stackoverflow 问题,但我找不到解决方案。

我已经 在 ajax 上下文中尝试了这个链接 als Expire session in flask

但我不确定我应该通过什么作为会话以及我应该在这里返回什么限定符?

@mod.before_request
def make_session_permanent():
    if session_is_invalid(session):
        return redirect(url_for('logout'))

def session_is_invalid(ses):
    # return your qualifier

如果以前的方法是正确的,有人可以告诉我什么是会话以及我应该在这里返回什么限定符?

我需要的是在会话注销后页面应该自动登陆登录屏幕正在发生的是会话注销正在发生但它没有重定向到登录页面

有人可以帮我吗?

标签: pythonsessionflask

解决方案


当我阅读Flask-Login包裹的文件时,我看到了一些东西。创建Flask应用程序时,您还需要创建登录管理器。

login_manager = LoginManager()

课堂上的一个login_view变量LoginManager引起了我的注意。详细信息包括以下说明:

用户需要登录时重定向到的视图的名称。(如果您的身份验证机制在您的应用程序之外,这也可以是绝对 URL。)

实际上,在你创建了一个LoginManager对象之后,

login_manager.login_view = 'your login view'

您应该指定您的登录页面。最后,一旦创建了实际的应用程序对象,您可以将其配置为登录:

login_manager.init_app(app)

完成这些操作后,unauthorized对您使用注释的每个方法的任何调用都@login_required将发送到您用 . 指出的页面login_view

我还开发了一个简单的应用程序。您可以从此处查看此应用程序。我对其进行了测试并且没有任何问题。

我希望它对你有帮助。


推荐阅读