我正在建立一个带烧瓶的网站,用户可以在其中登录帐户。 我正在使用flask-principal进行部分登录和角色管理。 有没有办法让用户的会话在说5分钟或10分钟后过期? 我无法在flask文档或flask-principal的文档中找到它。
我想到了一种手动方式,在登录时设置一个带有时间标记的变量服务器端,在用户采取的下一个操作中,服务器验证该时间戳上的时间增量并删除会议。
答案 0 :(得分:97)
随后会话就会到期。您可以尝试以下方法:
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天。
答案 1 :(得分:13)
是的,我们应该设置
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