Documentation
¶
Overview ¶
Package jwtX2 提供基于 JWT 的认证中间件,支持多设备管理和会话控制。
Index ¶
- type JwtHandlerx
- type JwtxMiddlewareGinx
- func (j *JwtxMiddlewareGinx) DeleteToken(ctx *gin.Context) (*UserClaims, error)
- func (j *JwtxMiddlewareGinx) ExtractToken(ctx *gin.Context) string
- func (j *JwtxMiddlewareGinx) LongVerifyToken(ctx *gin.Context) (*UserClaims, error)
- func (j *JwtxMiddlewareGinx) RefreshToken(ctx *gin.Context, newSsid string) (*UserClaims, error)
- func (j *JwtxMiddlewareGinx) SetToken(ctx *gin.Context, userId int64, name string, ssid string) (*UserClaims, error)
- func (j *JwtxMiddlewareGinx) VerifyToken(ctx *gin.Context) (*UserClaims, error)
- type JwtxMiddlewareGinxConfig
- type UserClaims
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type JwtHandlerx ¶
type JwtHandlerx interface {
// SetToken 登录时设置长短 Token
SetToken(ctx *gin.Context, userId int64, name string, ssid string) (*UserClaims, error)
// ExtractToken 从 Authorization: Bearer <token> 中提取 token
ExtractToken(ctx *gin.Context) string
// VerifyToken 验证 Access Token(短 Token)
VerifyToken(ctx *gin.Context) (*UserClaims, error)
// LongVerifyToken 验证 Refresh Token(长 Token)
LongVerifyToken(ctx *gin.Context) (*UserClaims, error)
// RefreshToken 刷新 Token,可选新 ssid(若为空则复用原 ssid)
RefreshToken(ctx *gin.Context, newSsid string) (*UserClaims, error)
// DeleteToken 退出登录:仅删除当前会话 Token
DeleteToken(ctx *gin.Context) (*UserClaims, error)
}
func MustNewJwtxMiddlewareGinx ¶
func MustNewJwtxMiddlewareGinx(cache redis.Cmdable, jwtConf *JwtxMiddlewareGinxConfig) JwtHandlerx
MustNewJwtxMiddlewareGinx 创建 JWT 中间件,配置错误时 panic Deprecated: 推荐使用 NewJwtxMiddlewareGinx 并处理返回的 error
func NewJwtxMiddlewareGinx ¶
func NewJwtxMiddlewareGinx(cache redis.Cmdable, jwtConf *JwtxMiddlewareGinxConfig) (JwtHandlerx, error)
type JwtxMiddlewareGinx ¶
type JwtxMiddlewareGinx struct {
// contains filtered or unexported fields
}
func (*JwtxMiddlewareGinx) DeleteToken ¶
func (j *JwtxMiddlewareGinx) DeleteToken(ctx *gin.Context) (*UserClaims, error)
DeleteToken 退出当前会话
func (*JwtxMiddlewareGinx) ExtractToken ¶
func (j *JwtxMiddlewareGinx) ExtractToken(ctx *gin.Context) string
ExtractToken 从 Authorization: Bearer <token> 提取
func (*JwtxMiddlewareGinx) LongVerifyToken ¶
func (j *JwtxMiddlewareGinx) LongVerifyToken(ctx *gin.Context) (*UserClaims, error)
LongVerifyToken 验证 Refresh Token
func (*JwtxMiddlewareGinx) RefreshToken ¶
func (j *JwtxMiddlewareGinx) RefreshToken(ctx *gin.Context, newSsid string) (*UserClaims, error)
RefreshToken 刷新 Token(可选新设备)
func (*JwtxMiddlewareGinx) SetToken ¶
func (j *JwtxMiddlewareGinx) SetToken(ctx *gin.Context, userId int64, name string, ssid string) (*UserClaims, error)
SetToken 登录:自动按设备管理会话(同设备只保留最新)
func (*JwtxMiddlewareGinx) VerifyToken ¶
func (j *JwtxMiddlewareGinx) VerifyToken(ctx *gin.Context) (*UserClaims, error)
VerifyToken 验证 Access Token
type JwtxMiddlewareGinxConfig ¶
type JwtxMiddlewareGinxConfig struct {
SigningMethod jwt.SigningMethod // 默认HS512加密方式jwt.SigningMethodHS512
DurationExpiresIn time.Duration // Access Token 过期时间
LongDurationExpiresIn time.Duration // Refresh Token 过期时间
JwtKey []byte // Access Token 密钥
LongJwtKey []byte // Refresh Token 密钥
HeaderJwtTokenKey string // Access Token Header Key,默认jwt-token
LongHeaderJwtTokenKey string // Refresh Token Header Key,默认long-jwt-token
}
JwtxMiddlewareGinxConfig 配置
- SigningMethod: 默认HS512加密方式jwt.SigningMethodHS512
- DurationExpiresIn: Access Token 过期时间,默认30分钟
- LongDurationExpiresIn: Refresh Token 过期时间,默认7天
- JwtKey: 密钥【必传】
- LongJwtKey: 密钥【必传】
- HeaderJwtTokenKey: Access Token Header Key,默认jwt-token
- LongHeaderJwtTokenKey: Refresh Token Header Key,默认long-jwt-token
type UserClaims ¶
type UserClaims struct {
jwt.RegisteredClaims
Uid int64 `json:"uid"`
Name string `json:"name"`
Ssid string `json:"ssid"` // 会话唯一 ID
UserAgent string `json:"user_agent"`
TokenType string `json:"token_type"` // "access" 或 "refresh"
}
UserClaims 用于 Access 和 Refresh Token
Click to show internal directories.
Click to hide internal directories.