Redis 实现分布式Session 登录相关细节
import redis
from flask import Flask, session, request, redirect, url_for
# 初始化Flask应用
app = Flask(__name__)
# 设置Redis连接
redis_host = 'localhost'
redis_port = 6379
redis_db = 0
app.secret_key = 'your_secret_key'
# 连接Redis
redis_client = redis.StrictRedis(host=redis_host, port=redis_port, db=redis_db)
# 设置session存储方式为Redis
Session(app)
@app.route('/')
def index():
if 'username' in session:
return 'Logged in as %s' % escape(session['username'])
return 'You are not logged in'
@app.route('/login', methods=['POST', 'GET'])
def login():
if request.method == 'POST':
session['username'] = request.form['username']
return redirect(url_for('index'))
return '''
<form action="" method="post">
<p><input type=text name=username>
<p><input type=submit value=Login>
</form>
'''
@app.route('/logout')
def logout():
# 清除session
session.pop('username', None)
# 或者使用 session.clear() 清除所有session数据
return redirect(url_for('index'))
if __name__ == '__main__':
app.run(debug=True)
这段代码使用Flask框架和Redis实现了一个简单的分布式Session登录系统。用户可以通过访问/login
路径进行登录,登出则可以通过/logout
路径。代码中使用了session
对象来存储用户登录状态,并且使用了Redis作为存储后端,以此来实现多个服务实例间的session共享。
评论已关闭