gpt4 book ai didi

python - 为什么设置 remember=False 仍然让我保持登录状态?

转载 作者:太空宇宙 更新时间:2023-11-04 03:37:57 25 4
gpt4 key购买 nike

使用 Flask-Login,我可以让用户登录和注销,也可以注册新用户。如果我登录然后导航到其他站点,然后返回到我的站点,我仍然处于登录状态。login_user(user, remember=False) 不应该阻止这种情况吗?我是不是误解了它的工作原理?

在 views.py 中,除其他代码外,我还有:

from flask.ext.login import login_user, logout_user, current_user, login_required

@app.route('/signup', methods=['GET', 'POST'])
def signup():
form = SignupForm()
if form.validate_on_submit():
user = User.query.filter_by(email = form.email.data.lower()).first()
if user:
flash("Email already exists!")
return redirect(url_for('signup'))
elif form.password.data != form.password2.data:
flash("Passwords do not match.")
return redirect(url_for('signup'))
else:
newuser = User(email=form.email.data, nickname=form.username.data)
newuser.pwdhash = generate_password_hash(form.password.data)
db.session.add(newuser)
db.session.commit()
login_user(newuser, remember=False)
flash("Thank you for registering")
return redirect(url_for('index'))
return render_template('signup.html', form=form)

@app.route('/login', methods=['GET', 'POST'])
def login():
form = SigninForm()
if form.validate_on_submit():
user = User.query.filter_by(email = form.email.data.lower()).first()
if user and check_password_hash(user.pwdhash, form.password.data):
login_user(user, remember=False)
return redirect(url_for('index'))
else:
flash('huh')
return redirect(url_for('login'))
else:
return render_template('login.html', form=form)

最佳答案

除了 Flask 的 session cookie 之外,Flask-Login 的内存标志还设置了一个特殊的 cookie 。这个记住 cookie 在浏览器重新启动后仍然存在,默认情况下为 30 天,但只有在记住为真时才会创建。

即使 remember 为 false,Flask 的 session cookie 也会存在,因此您将在单个浏览器 session 期间保持登录状态。 Flask 的 session cookie 也可以持久化,但这超出了 Flask-Login 的范围。

您观察到的行为是完全正常的。当某人离开您的站点时,无法自动将他们从当前 session 中注销。

来自docs ,强调我的:

A cookie will be saved on the user’s computer, and then Flask-Login will automatically restore the user ID from that cookie if it is not in the session.

关于python - 为什么设置 remember=False 仍然让我保持登录状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27965897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com