我正在将 Flask、Python 用于我的 Web 应用程序。用户将登录,如果会话时间超过 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'))
Run Code Online (Sandbox Code Playgroud)
我已经使用 before_request 来判断超时。我已经引用了这个链接Flask logout if session expires if no activity and redirect for login page 但我没有看到我之前尝试过的和这段代码有任何变化。我可以在那里看到很多关于这个主题的 stackoverflow 问题,但我找不到解决方案。
我已经在 ajax 上下文中尝试了此链接 als Expire session in flask in ajax context
但我不确定我应该通过什么作为会话以及我应该在这里返回什么限定符?
@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
Run Code Online (Sandbox Code Playgroud)
如果前面的方法是正确的,有人可以告诉我会话是什么以及我应该在这里返回什么限定符吗?
我需要的是在会话注销后页面应该自动登陆登录屏幕发生的事情是会话注销正在发生但它没有重定向到登录页面
有人可以帮助我吗?
当我阅读Flask-Login包裹的文件时,我看到了一些东西。创建Flask应用程序时,您还需要创建登录管理器。
login_manager = LoginManager()
Run Code Online (Sandbox Code Playgroud)
课堂上的一个login_view变量LoginManager引起了我的注意。详细信息包括以下解释:
用户需要登录时重定向到的视图的名称。(如果您的身份验证机制在您的应用程序外部,这也可以是绝对 URL。)
实际上,在创建LoginManager对象之后,
login_manager.login_view = 'your login view'
Run Code Online (Sandbox Code Playgroud)
您应该指定您的登录页面。最后,一旦创建了实际的应用程序对象,您就可以使用以下命令将其配置为登录:
login_manager.init_app(app)
Run Code Online (Sandbox Code Playgroud)
执行这些操作后,unauthorized对您使用@login_required注解的每个方法的任何调用都将发送到您使用login_view.
我还开发了一个简单的应用程序。您可以从这里查看此应用程序。我测试了它并且工作没有任何问题。
我希望它能帮助你。
| 归档时间: |
|
| 查看次数: |
2476 次 |
| 最近记录: |