用途:为 Go Gin API 添加 JWT 认证与基于角色的访问控制(RBAC),适用于登录、注册、JWT 令牌、角色校验、受保护路由与密码哈希场景。
主要能力:JWT 中间件与登录处理器;访问与刷新令牌及令牌生命周期(刷新、吊销、黑名单);密码哈希(bcrypt cost >= 12);RBAC 角色与权限控制;登录安全(统一错误提示,避免泄露邮箱是否存在);认证路由限流;OAuth2/社交登录与验证码相关参考文档。
依赖:github.com/golang-jwt/jwt/v5、golang.org/x/crypto、github.com/google/uuid、golang.org/x/time/rate。
使用要点:Claims 内嵌 jwt.RegisteredClaims 并包含 UserID、Email、Role;RefreshClaims 仅内嵌 RegisteredClaims;RegisteredClaims.ID 存 jti,供令牌黑名单使用。TokenConfig 含 AccessSecret、RefreshSecret、AccessTTL、RefreshTTL、Issuer、Audience,从环境变量加载,切勿硬编码密钥。生成令牌须设置 jti(uuid.NewString())、NotBefore、IssuedAt、ExpiresAt。解析时白名单校验签名方法,使用 t.Method != jwt.SigningMethodHS256(不要用过于宽泛的 *jwt.SigningMethodHMAC)。过期判断用 errors.Is(err, jwt.ErrTokenExpired)。中间件提取 Authorization: Bearer <token>,解析后 c.Set(ClaimsKey, claims) 与 c.Set(UserIDKey, claims.UserID),再 c.Next()。处理器中可用 c.GetString(middleware.UserIDKey) 或 c.Get(middleware.ClaimsKey)。路由按 /auth(IPRateLimiter)、protected(Auth)、/admin(Auth + RequireRole("admin"))分组。单实例可用进程内限流,多实例建议 Redis。
限制:不涉及 API 路由/处理器、数据库查询、部署与测试(分别见其他技能);未提供具体代码示例、收费与平台信息暂未提供。