统一身份认证系统与排行榜功能的实现
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)
通过将统一身份认证与排行榜功能结合,可以为用户提供更安全、个性化的体验。这种设计不仅提升了系统的安全性,还增强了用户参与度和互动性。
本站知识库部分内容及素材来源于互联网,如有侵权,联系必删!
标签:统一身份认证