Documentation
¶
Index ¶
- Variables
- type Claims
- type JWT
- func (j *JWT) GenerateAccessToken(claims *Claims) (string, int64, error)
- func (j *JWT) GenerateTokenPair(claims *Claims) (*TokenPair, error)
- func (j *JWT) GetExpirationTime(token string) (int64, error)
- func (j *JWT) IsExpired(token string) (bool, error)
- func (j *JWT) ParseWithoutVerification(token string) (*Claims, error)
- func (j *JWT) RefreshAccessToken(refreshToken string) (string, int64, error)
- func (j *JWT) RefreshToken(refreshToken string) (*TokenPair, error)
- func (j *JWT) ShouldRefresh(token string, threshold int64) (bool, error)
- func (j *JWT) VerifyAccessToken(token string) (*Claims, error)
- func (j *JWT) VerifyRefreshToken(token string) (*Claims, error)
- type TokenPair
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // ErrTokenExpired token已过期 ErrTokenExpired = errors.New("token expired") // ErrTokenInvalid token无效 ErrTokenInvalid = errors.New("token invalid") // ErrTokenMalformed token格式错误 ErrTokenMalformed = errors.New("token malformed") // ErrRefreshTokenExpired refresh token已过期 ErrRefreshTokenExpired = errors.New("refresh token expired") )
Functions ¶
This section is empty.
Types ¶
type Claims ¶
type Claims struct {
UserID uint `json:"user_id"`
Username string `json:"username"`
Email string `json:"email,omitempty"`
Role string `json:"role,omitempty"`
Type string `json:"type"` // "access" or "refresh"
Nonce string `json:"nonce,omitempty"` // 随机数确保唯一性
IssuedAt int64 `json:"iat"`
ExpiresAt int64 `json:"exp"`
}
Claims JWT claims
type JWT ¶
type JWT struct {
// contains filtered or unexported fields
}
JWT JWT token工具
func NewJWT ¶
NewJWT 创建JWT实例 secretKey: 用于签名的密钥 encryptKey: 用于加密payload的密钥(可选,为空时不加密) accessTokenExpire: access token过期时间(秒),默认3600(1小时) refreshTokenExpire: refresh token过期时间(秒),默认604800(7天)
func (*JWT) GenerateAccessToken ¶
GenerateAccessToken 生成access token(用于刷新时)
func (*JWT) GenerateTokenPair ¶
GenerateTokenPair 生成token对(access token + refresh token)
func (*JWT) GetExpirationTime ¶
GetExpirationTime 获取token的过期时间
func (*JWT) ParseWithoutVerification ¶
ParseWithoutVerification 解析token但不验证签名(仅用于调试)
func (*JWT) RefreshAccessToken ¶
RefreshAccessToken 仅刷新access token(不生成新的refresh token)
func (*JWT) RefreshToken ¶
RefreshToken 使用refresh token刷新access token
func (*JWT) ShouldRefresh ¶
ShouldRefresh 检查access token是否应该刷新(例如:剩余时间小于阈值)
func (*JWT) VerifyAccessToken ¶
VerifyAccessToken 验证access token
type TokenPair ¶
type TokenPair struct {
AccessToken string `json:"access_token"`
RefreshToken string `json:"refresh_token"`
ExpiresIn int64 `json:"expires_in"` // access token过期时间(秒)
RefreshExpiresIn int64 `json:"refresh_expires_in"` // refresh token过期时间(秒)
}
TokenPair token对(access token + refresh token)
Click to show internal directories.
Click to hide internal directories.