97

我正在用烧瓶建立一个网站,用户拥有帐户并能够登录。我正在使用烧瓶主体进行部分登录和角色管理。有没有办法让用户的会话在 5 分钟或 10 分钟后过期?我无法在烧瓶文档或烧瓶主体的文档中找到它。

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

4

2 回答 2

140

一旦你关闭浏览器,烧瓶会话就会过期,除非你有一个永久会话。您可以尝试以下方法:

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 天。

于 2012-08-02T21:01:53.220 回答
44

是的,我们应该设置

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
于 2018-04-18T05:12:00.383 回答