Flask-Login的`remember_me`是否会覆盖Flask的`permanent`吗?

时间:2018-12-06 13:33:11

标签: flask flask-login

Remember-meparameter

flask_login.login_user(user, remember=False, duration=None, force=False, fresh=True)

login_user中的Flask-Login。这样可以“在会话期满后记住用户”。

仅使用Flask(而不是Flask-Login)

'PERMANENT_SESSION_LIFETIME': datetime.timedelta(31)
default_config中,

默认设置为31天(可以适当修改)。 此外,session.permanent可以是set以使会话永久化, perhaps通过:

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登录的remember_me是否会覆盖Flask的permanent?他们如何互动?

1 个答案:

答案 0 :(得分:3)

remember_me未存储在Flask会话中。它存储在单独的 cookie中,其名称和有效期为handled in the Flask-Login configuration

  

REMEMBER_COOKIE_NAME
  用于存储“记住我”信息的cookie的名称。默认remember_token

     

REMEMBER_COOKIE_DURATION
  Cookie过期之前的时间,以datetime.timedelta对象或整数秒为单位。 默认:365天(公历1年为非-年)

     

REMEMBER_COOKIE_REFRESH_EACH_REQUEST
  如果设置为True,则每次请求都会刷新Cookie,这会延长生存期。就像Flask的SESSION_REFRESH_EACH_REQUEST默认False

还有更多REMEMBER_COOKIE_*设置可控制cookie的可见性(域,路径,仅加密连接,以及浏览器中运行的代码是否可以访问该值)。

Flask会话配置与此无关;那是具有单独设置的单独cookie。 记住我功能根本不与Flask的permanent_session_lifetime / PERMANENT_SESSION_LIFETIME设置,Flask SESSION_COOKIE_* configurationapp.session.permanent交互。

默认情况下,Flask使用session作为会话cookie名称,而Flask-Login使用remember_token作为记住我 cookie。