Documentation
¶
Index ¶
- Variables
- func GenerateToken(userID uint, username, role, userType string) (string, error)
- func GenerateTokenWithCustomExpiry(userID uint, username, role, userType string, expireSeconds int) (string, error)
- func GetJTI(tokenString string) (string, error)
- func InvalidateToken(tokenString string) error
- func InvalidateTokenByID(jti string, expiry time.Time) error
- func IsTokenRevoked(jti string) bool
- func RefreshToken(tokenString string) (string, error)
- func SetDefaultJWTManager(m *Manager)
- type Claims
- type Manager
- type TokenBlacklist
Constants ¶
This section is empty.
Variables ¶
var ( //ErrTokenExpired 令牌已过期 ErrTokenExpired = errors.New("令牌已过期") //ErrTokenInvalid 令牌无效 ErrTokenInvalid = errors.New("令牌无效") //ErrTokenMalformed 令牌格式错误 ErrTokenMalformed = errors.New("令牌格式错误") //ErrTokenNotValidYet 令牌尚未生效 ErrTokenNotValidYet = errors.New("令牌尚未生效") //ErrTokenRevoked 令牌已被撤销 ErrTokenRevoked = errors.New("令牌已被撤销") )
var DefaultJWT = NewJWTManager()
DefaultJWT 默认 JWT 管理器,包级 facade 代理到它的 blacklist。
Functions ¶
func GenerateToken ¶
GenerateToken 生成 JWT Token
func GenerateTokenWithCustomExpiry ¶
func GenerateTokenWithCustomExpiry(userID uint, username, role, userType string, expireSeconds int) (string, error)
GenerateTokenWithCustomExpiry 生成带自定义过期时间的 Token
func InvalidateToken ¶
InvalidateToken 使 Token 失效(加入黑名单)
func InvalidateTokenByID ¶
InvalidateTokenByID 直接通过 JTI 使 Token 失效 参数: jti JWT ID,expiry 过期时间
func SetDefaultJWTManager ¶ added in v1.1.0
func SetDefaultJWTManager(m *Manager)
SetDefaultJWTManager 提升指定 Manager 为全局默认。
Types ¶
type Claims ¶
type Claims struct {
UserID uint `json:"user_id"`
Username string `json:"username"`
Role string `json:"role"` // admin 或 staff
UserType string `json:"user_type"` // super_admin, admin, staff
JTI string `json:"jti"` // JWT ID(唯一标识,用于黑名单)
jwt.RegisteredClaims
}
Claims JWT 声明
func GetClaimsFromToken ¶
GetClaimsFromToken 获取 Token 的 Claims(不验证过期) 用于获取已过期 Token 的信息
type Manager ¶ added in v1.1.0
type Manager struct {
// contains filtered or unexported fields
}
Manager JWT 管理器(#10)。持有独立的 TokenBlacklist, 支持多实例(如区分 user-token 与 refresh-token 黑名单)。
func NewJWTManager ¶ added in v1.1.0
func NewJWTManager() *Manager
NewJWTManager 创建 JWT 管理器实例(blacklist 懒取全局 Redis)。
func NewJWTManagerWithRedis ¶ added in v1.1.0
NewJWTManagerWithRedis 创建 JWT 管理器并注入指定 Redis 客户端(用于多 Redis/测试隔离)。
func (*Manager) Blacklist ¶ added in v1.1.0
func (m *Manager) Blacklist() *TokenBlacklist
Blacklist 返回 Manager 持有的黑名单实例。
type TokenBlacklist ¶
type TokenBlacklist struct {
// contains filtered or unexported fields
}
TokenBlacklist Token 黑名单管理(使用 JTI 优化)。 client 为 nil 时回退到 database.GetRedis(),兼容存量未注入场景。
func NewTokenBlacklist ¶ added in v1.1.0
func NewTokenBlacklist(client *redis.Client) *TokenBlacklist
NewTokenBlacklist 创建黑名单实例,client 可为 nil(懒取全局 Redis)。
func (*TokenBlacklist) Add ¶
func (tb *TokenBlacklist) Add(jti string, expiry time.Time) error
Add 将 Token 的 JTI 加入黑名单 参数: jti JWT ID,expiry Token 过期时间
func (*TokenBlacklist) IsBlacklisted ¶
func (tb *TokenBlacklist) IsBlacklisted(jti string) bool
IsBlacklisted 检查 JTI 是否在黑名单中