首页 文章

Flask永久会话:在哪里定义它们?

提问于
浏览
16

默认情况下,Flask使用volatile会话,这意味着会话cookie设置为在浏览器关闭时过期 . 为了使用永久会话,其将使用具有定义的到期日期的cookie,应该设置 session.permanent = Truementioned in this question.,并且将根据 config['PERMANENT_SESSION_LIFETIME'] 设置到期日期 .

我很惊讶会话生存期在配置文件中定义,但是无法通过配置请求使用永久会话,例如 config['USE_PERMANENT_SESSION'] = True . 但就是这样吧 .

我的问题是:如果你确实想要永久性 Session ,那么定义它们的最佳位置是什么?它是否在上述问题中提出的函数中?但是这意味着每次请求都会重新设置它?似乎一旦确定, session.permanent 仍然是真的直到会话结束 .

永久会话通常在登录后使用,因此请求它们的最佳位置可能是在处理 login_user() 时?那么对所有匿名页面使用易失性会话cookie的最佳策略是什么,并通过在登录时执行 session.permanent = True 切换到永久会话?

并且可能想要设置不同的生命周期,具体取决于它是普通的 session cookie还是 remember_me cookie . 实现这一目标的最佳方法是什么?

2 回答

  • 15

    我很惊讶没有回答这个问题 . 似乎应该有某种类型的配置变量 SESSION_PERMANENT = True . 但不幸的是没有 . 正如您所说,这是最好的方法 .

    @app.before_request
    def make_session_permanent():
        session.permanent = True
    
  • 0

    我选择你说的“login_user()”

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

    如果它设置为 app.before_request ,这将导致设置它们太多次 .

相关问题