匿名用户使用Flask-Login登录时复制用户会话

时间:2015-08-09 18:09:13

标签: python flask flask-login

我知道flask.session可用于存储session['key'] = value的会话数据,但我不确定在使用Flask-Login时是否可以执行此操作。我的应用程序是一个购物车,我想确保购物车移动到登录用户,如果他们首先添加一些匿名用户。我还想在用户注销时清除会话。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

Flask-Login无法更改您使用会话的方式。你仍然像往常一样使用会话。

from flask import session
session['my_key'] = my_value  # add value
del session['my_key']  # remove value
session.clear()  # remove everything

会话可能会在登录后保持不变。如果您发现它没有,您可以在登录,登录期间复制会话,然后恢复数据。

@app.route('/login', methods=['GET', 'POST'])
def login():
    old_session = session.copy()
    ...
    login_user(user)
    session.update(old_session)
    ...

您可以在注销端点中清除会话。如果用户没有注销,只是关闭浏览器,则无法清除会话,您只需依赖它即将到期。

@app.route('/logout')
def logout():
    logout_user()
    session.clear()
    ...