是否有一种简单的方法可以在烧瓶中使会话超时?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否有一种简单的方法可以在烧瓶中使会话超时?相关的知识,希望对你有一定的参考价值。

我正在建立一个带烧瓶的网站,用户可以在其中登录帐户。我正在使用flask-principal进行部分登录和角色管理。有没有办法让用户的会话在说5分钟或10分钟后过期?我无法在烧瓶文档或flask-principal的文档中找到它。

我想到了一种手工操作的方法,在登录时设置带有时间标记的变量服务器端,在用户采取的下一个操作中,服务器验证该时间戳上的时间增量并删除会话。

答案

除非您有永久会话,否则在关闭浏览器后,会话会话到期。您可以尝试以下方法:

from datetime import timedelta
from flask import session, app

@app.before_request
def make_session_permanent():
    session.permanent = True
    app.permanent_session_lifetime = timedelta(minutes=5)

默认情况下,在Flask中,permanent_session_lifetime设置为31天。

另一答案

是的,我们应该设定

session.permanent = True
app.permanent_session_lifetime = timedelta(minutes=5)

但我不认为它应该设置在app.before_request,这将导致他们也可能设置它们。

permanent_session_lifetime是一个Basics Configuration,所以它应该在你配置应用程序时设置:

 from datetime import timedelta
 app = Flask(__name__)
 app.config['SECRET_KEY'] = 'xxxxxxxxx'
 app.config['PERMANENT_SESSION_LIFETIME'] =  timedelta(minutes=5)

session将为每个客户创建,与其他客户分开。所以,我认为设置session.permanent的最佳位置是当你login()

@app.route('/login', methods=['GET', 'POST'])
def login():
    #After Verify the validity of username and password
    session.permanent = True

以上是关于是否有一种简单的方法可以在烧瓶中使会话超时?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 中设置会话超时?

如何确保烧瓶应用程序已在所有路线上获得授权?

是否有睡眠/等待/超时的竹任务?

是否有一种方法可以将实时记录的音频片段连续发送到Flutter.io中的后端服务器?

如何在 JSF 2.0 中使会话无效?

会话超时通知