用途:在 FastAPI 或 Python 项目中实现 JWT 认证,包括生成访问令牌、校验令牌、从令牌中提取当前用户,以及基于角色的访问控制(RBAC)。
主要能力:create_access_token(data, expires_delta=None) 位于 auth/jwt.py,用于生成令牌,支持自定义过期时间与角色等自定义声明;verify_token(token) 与 get_current_user(token) 位于 auth/dependencies.py,用于校验令牌与注入当前用户;User.from_payload(payload) 从解码后的载荷提取用户。令牌采用 HS256 签名,载荷包含 sub(必需,用户标识)、exp(自动过期时间)、roles(可选角色列表)等声明。
使用方式:受保护接口通过 FastAPI 依赖注入,例如 @router.get("/protected") 配合 user = Depends(get_current_user);角色控制使用 RoleChecker(allowed_roles=["admin"])。前端登录后保存令牌,请求时携带 Authorization: Bearer <token>,后端用 HTTPBearer() 依赖校验并提取用户,验证失败返回 401 Unauthorized。配置环境变量 JWT_SECRET_KEY(至少 32 字符)、JWT_ALGORITHM(默认 "HS256")、JWT_EXPIRATION_MINUTES(推荐 15)。文件产物为 auth/jwt.py 与 auth/dependencies.py。
适用场景:FastAPI/Python 后端需要无状态令牌认证、角色授权,并与前端 auth-integration 技能配合的登录会话流程。
限制与注意:访问令牌建议 15–30 分钟过期,长会话需另实现刷新令牌流程;JWT 声明中不得放入密码、PII 或密钥等敏感数据;登出需实现令牌黑名单(revoked_tokens 集合);必须始终校验 exp 拒绝过期令牌;仅用 HMAC-SHA256,禁用 algorithm="none"。资料未提供具体实现代码细节、依赖库版本、刷新令牌流程实现及完整黑名单机制,暂未提供。