首页 文章

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

提问于
浏览
65

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

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

2 回答

  • 89

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

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

  • 11

    是的,我们应该设定

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

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

    permanent_session_lifetimeBasics 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
    

相关问题