我希望能够检测自上次登录 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)
由于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)
归档时间: |
|
查看次数: |
12957 次 |
最近记录: |