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

标签 session flask

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

mainapp.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')

用户 View .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

设置.py:

app.secret_key = 'somethingreallysecret'

最佳答案

因为flask session使用cookie,即使用户关闭窗口,数据也会保留。您可以使用 Flask-SocketIO 跟踪关闭窗口的使用情况.

如果您想从 session 中删除特定 key :

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)

关于session - 关闭浏览器后 Flask.session 仍然存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37227780/

相关文章:

python - TensorFlow、Keras、Flask - 无法通过 Flask 将我的 Keras 模型作为 Web 应用程序运行

python - 如何在带有 FormField 的 Flask/WTForms 中使用 populate_obj?

python - 从较低模块导入时出现 ImportError

php - session_set_save_handler 导致登录循环

php - Codeigniter - 显示与当前 session 的用户 ID 相关的数据库记录

ASP.NET 3.5 : What could cause a session to timeout prematurely?

python - 将 ID 从 HTML 发送到 Flask Python

ASP.NET 标识 session 超时

PHP session 超时 htaccess 文件

python - 使用 Python 和 Flask 流式传输数据