jwt

package
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 23, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	//ErrTokenExpired 令牌已过期
	ErrTokenExpired = errors.New("令牌已过期")
	//ErrTokenInvalid 令牌无效
	ErrTokenInvalid = errors.New("令牌无效")
	//ErrTokenMalformed 令牌格式错误
	ErrTokenMalformed = errors.New("令牌格式错误")
	//ErrTokenNotValidYet 令牌尚未生效
	ErrTokenNotValidYet = errors.New("令牌尚未生效")
	//ErrTokenRevoked 令牌已被撤销
	ErrTokenRevoked = errors.New("令牌已被撤销")
)
View Source
var DefaultJWT = NewJWTManager()

DefaultJWT 默认 JWT 管理器,包级 facade 代理到它的 blacklist。

Functions

func GenerateToken

func GenerateToken(userID uint, username, role, userType string) (string, error)

GenerateToken 生成 JWT Token

func GenerateTokenWithCustomExpiry

func GenerateTokenWithCustomExpiry(userID uint, username, role, userType string, expireSeconds int) (string, error)

GenerateTokenWithCustomExpiry 生成带自定义过期时间的 Token

func GetJTI

func GetJTI(tokenString string) (string, error)

GetJTI 从 Token 中提取 JTI(不验证签名) 用于需要在验证前获取 JTI 的场景

func InvalidateToken

func InvalidateToken(tokenString string) error

InvalidateToken 使 Token 失效(加入黑名单)

func InvalidateTokenByID

func InvalidateTokenByID(jti string, expiry time.Time) error

InvalidateTokenByID 直接通过 JTI 使 Token 失效 参数: jti JWT ID,expiry 过期时间

func IsTokenRevoked

func IsTokenRevoked(jti string) bool

IsTokenRevoked 检查 Token 是否被撤销(通过 JTI)

func RefreshToken

func RefreshToken(tokenString string) (string, error)

RefreshToken 刷新 Token

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

func GetClaimsFromToken(tokenString string) (*Claims, error)

GetClaimsFromToken 获取 Token 的 Claims(不验证过期) 用于获取已过期 Token 的信息

func ParseToken

func ParseToken(tokenString string) (*Claims, error)

ParseToken 解析 JWT 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

func NewJWTManagerWithRedis(client *redis.Client) *Manager

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 是否在黑名单中

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL