我正在建立一个带有flask的网站,其中用户具有帐户并能够登录。我正在使用flask-principal作为登录部分和角色管理。有没有办法让用户的会话在5分钟或10分钟后过期?我在flask文档或flask-principal文档中找不到该文件。
我想到了一种手动方法,在登录时在服务器端设置一个带有时间标签的变量,并在用户执行下一个操作时,服务器会验证该时间戳记上的时间增量并删除会话。
我正在建立一个带有flask的网站,其中用户具有帐户并能够登录。我正在使用flask-principal作为登录部分和角色管理。有没有办法让用户的会话在5分钟或10分钟后过期?我在flask文档或flask-principal文档中找不到该文件。
我想到了一种手动方法,在登录时在服务器端设置一个带有时间标签的变量,并在用户执行下一个操作时,服务器会验证该时间戳记上的时间增量并删除会话。
Answers:
烧瓶会话一旦关闭浏览器就会过期,除非您有一个永久会话。您可以尝试以下方法:
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天。
app.secret_key
并重新启动服务器,会话也将重置。
before_request
此处而不是原因是什么before_first_request
?
是的,我们应该设定
session.permanent = True
app.permanent_session_lifetime = timedelta(minutes=5)
但我认为不应将其设置为app.before_request
,这可能会导致有时也将其设置为。
这permanent_session_lifetime
是基本配置,因此应在配置应用程序时进行设置:
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