关闭浏览器后 Flask.session 仍然存在

Don*_*the 4 session flask

我希望能够检测自上次登录 Flask 站点后用户是否关闭了浏览器。我已经读过 Flask 会话应该在关闭浏览器时过期,但据我所知,会话数据存储在服务器上,并且在浏览器会话中持续存在。用户关闭浏览器时如何清除所有会话数据?

主应用程序.py:

@mainapp.route('/')
def home():
    if 'user_name' in session:
        logger.debug( 'Logged in as {0}'.format(escape(session['user_name'])))
    return render_template('home.html')
Run Code Online (Sandbox Code Playgroud)

用户视图.py:

@userviews.route("/login", methods=["GET", "POST"])
def login():
    form = LoginForm(request.form)
    if form.validate_on_submit():
        #get user from db
        session['user_name'] = user.user_name
Run Code Online (Sandbox Code Playgroud)

设置.py:

app.secret_key = 'somethingreallysecret'
Run Code Online (Sandbox Code Playgroud)

Ami*_*aee 9

由于flask 会话使用cookie,因此即使用户关闭窗口,数据也会持久化。您可以使用Flask-SocketIO跟踪关闭窗口的使用情况。

如果要从会话中删除特定密钥:

from flask import session
from flask_socketio import SocketIO, emit
from flask.ext.login import current_user, logout_user

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)

@socketio.on('disconnect')
def disconnect_user():
    logout_user()
    session.pop('yourkey', None)
Run Code Online (Sandbox Code Playgroud)