我正在使用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)
我是否缺少某些实现?我已经用chrome和firefox对此进行了测试,并且在同一件事上都发生了,这就是如果我只是关闭浏览器而不注销我的登录信息,那么该操作仍然有效。
编辑#1
我仔细研究了一下,如果关闭浏览器然后再次打开它,会话cookie仍然存在。这是默认行为吗?
编辑#2
在进一步研究之后,我发现默认情况下flask使会话永久存在,因此您需要显式设置为False
,这似乎可以解决该会话持续存在的问题,但是现在的问题是它删除了{ {1}} cookie。
remember_token