生成Token,验证Token代码如下:
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer, SignatureExpired, BadSignature from config import BaseConfig from flask import request, jsonify from functools import wraps from db_connect import db_select # 生成token, 有效时间为24小时 def generate_token(id, username=None, expiration=86400): serializer = Serializer(BaseConfig.SECRET_KEY, expires_in=expiration) data = {'id': id, 'username': username} if username is not None else {} return serializer.dumps(data) # 解析token def verify_token(token): serializer = Serializer(BaseConfig.SECRET_KEY) # token正确 try: data = serializer.loads(token) return data # token过期 except SignatureExpired: return None # token错误 except BadSignature: return None # token无值 except Exception as e: return None # 获取登录用户id def get_user_id(): token = request.headers.get('Authorization') data = verify_token(token) id = data["id"] return id def login_required(func): """登录校验装饰器 :param func:函数名 :return: 闭包函数名 """ @wraps(func) def decorated(*args, **kwargs): token = request.headers.get('Authorization', None) if verify_token(token): return func(*args, **kwargs) return jsonify({'code': 401, 'msg': '登录过期,请重新登录!'}) return decorated
# 判断是否为管理员 def is_admin(user_id): admin_sql = f"SELECT tg.name FROM tb_users tu \ LEFT JOIN tb_groups tg \ ON tu.group_id=tg.id \ WHERE tu.id={user_id}" auth_type, auth_name = db_select(admin_sql) if auth_type[0][0] != "管理员": return True else: return False
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构