统一身份认证系统与排行榜功能的实现
2025-08-20 23:07
统一身份认证系统(SSO)是现代应用中常见的安全机制,它允许用户使用一个账户登录多个系统。在实际开发中,通常会采用OAuth2.0或JWT进行身份验证。以下是一个基于Python Flask框架的简单示例:
from flask import Flask, request, jsonify
import jwt
import datetime
app = Flask(__name__)
SECRET_KEY = 'your-secret-key'
def generate_token(user_id):
payload = {
'user_id': user_id,
'exp': datetime.datetime.utcnow() + datetime.timedelta(hours=1)
}
return jwt.encode(payload, SECRET_KEY, algorithm='HS256')
@app.route('/login', methods=['POST'])
def login():
data = request.json
username = data.get('username')
password = data.get('password')
# 简化验证逻辑
if username == 'admin' and password == '123456':
token = generate_token(1)
return jsonify({'token': token})
else:
return jsonify({'error': 'Invalid credentials'}), 401
@app.route('/protected', methods=['GET'])
def protected():
token = request.headers.get('Authorization')
if not token:
return jsonify({'error': 'Missing token'}), 401
try:
payload = jwt.decode(token, SECRET_KEY, algorithms=['HS256'])
user_id = payload['user_id']
return jsonify({'message': f'Welcome user {user_id}'})
except jwt.ExpiredSignatureError:
return jsonify({'error': 'Token expired'}), 401
except jwt.InvalidTokenError:
return jsonify({'error': 'Invalid token'}), 401
if __name__ == '__main__':
app.run(debug=True)

在实现统一身份认证后,可以进一步构建排行榜功能,用于展示用户积分、排名等信息。例如,可以使用Redis存储用户分数并实现排行榜更新:
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
def update_score(user_id, score):
r.zadd('leaderboard', {user_id: score})
def get_leaderboard():
return r.zrevrange('leaderboard', 0, -1, withscores=True)
通过将统一身份认证与排行榜功能结合,可以为用户提供更安全、个性化的体验。这种设计不仅提升了系统的安全性,还增强了用户参与度和互动性。
本站知识库部分内容及素材来源于互联网,如有侵权,联系必删!
标签:统一身份认证

