Flask-Login-记住我会自动工作

时间:2019-01-29 13:48:32

标签: 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)

我是否缺少某些实现?我已经用chrome和firefox对此进行了测试,并且在同一件事上都发生了,这就是如果我只是关闭浏览器而不注销我的登录信息,那么该操作仍然有效。

编辑#1

我仔细研究了一下,如果关闭浏览器然后再次打开它,会话cookie仍然存在。这是默认行为吗?

编辑#2

在进一步研究之后,我发现默认情况下flask使会话永久存在,因此您需要显式设置为False,这似乎可以解决该会话持续存在的问题,但是现在的问题是它删除了{ {1}} cookie。

remember_token

0 个答案:

没有答案