Roh*_*hit 11 flask flask-login
我正在编写一个简单的登录页面,flask-login并尝试实现“记住我”功能。
令我惊讶的是,“记住我”会自动工作,无需remember=True在功能中进行设置login_user,当我登录后关闭浏览器然后再次重新打开时,我的登录会话仍然存在。
我什至尝试remember=False显式设置,但登录仍然持续,浏览器关闭。下面是我的观点
@app.route("/login", methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(username=form.username.data).first()
if user is not None and user.verify_password(form.password.data):
if form.remember_me.data:
login_user(user, remember=True, duration=timedelta(days=5))
else:
login_user(user)
# login_user(user, remember=False)
flash('Successful Login', 'success')
next_url = request.args.get('next')
if not next_url or url_parse(next_url).netloc != '':
return redirect(url_for("thankyou"))
return redirect(next_url)
else:
flash('Incorrect Username or Password', 'danger')
form.username.data = ''
form.password.data = ''
return render_template("login.html", form=form)
Run Code Online (Sandbox Code Playgroud)
我是否遗漏了什么或者我的实施有问题?我已经用 chrome 和 firefox 对此进行了测试,并且在这两种情况下都会发生同样的事情,即如果我只是关闭浏览器而不注销我的登录仍然存在。
编辑#1
我进一步研究了它,如果我关闭浏览器然后再次打开它,会话 cookie 似乎仍然存在。这是默认行为吗?
编辑#2
经过更多深入研究后,我发现 Flask 默认情况下会使会话永久化,因此您需要显式设置为False,这似乎解决了会话持续存在的问题,但现在的问题是它remember_token也删除了 cookie。
@app.before_request
def make_session_permanent():
session.permanent = False
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9077 次 |
| 最近记录: |