token

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: Apr 12, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Index

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

func NewJWT(secretKey, encryptKey string, accessTokenExpire, refreshTokenExpire int64) *JWT

NewJWT 创建JWT实例 secretKey: 用于签名的密钥 encryptKey: 用于加密payload的密钥(可选,为空时不加密) accessTokenExpire: access token过期时间(秒),默认3600(1小时) refreshTokenExpire: refresh token过期时间(秒),默认604800(7天)

func (*JWT) GenerateAccessToken

func (j *JWT) GenerateAccessToken(claims *Claims) (string, int64, error)

GenerateAccessToken 生成access token(用于刷新时)

func (*JWT) GenerateTokenPair

func (j *JWT) GenerateTokenPair(claims *Claims) (*TokenPair, error)

GenerateTokenPair 生成token对(access token + refresh token)

func (*JWT) GetExpirationTime

func (j *JWT) GetExpirationTime(token string) (int64, error)

GetExpirationTime 获取token的过期时间

func (*JWT) IsExpired

func (j *JWT) IsExpired(token string) (bool, error)

IsExpired 检查token是否过期

func (*JWT) ParseWithoutVerification

func (j *JWT) ParseWithoutVerification(token string) (*Claims, error)

ParseWithoutVerification 解析token但不验证签名(仅用于调试)

func (*JWT) RefreshAccessToken

func (j *JWT) RefreshAccessToken(refreshToken string) (string, int64, error)

RefreshAccessToken 仅刷新access token(不生成新的refresh token)

func (*JWT) RefreshToken

func (j *JWT) RefreshToken(refreshToken string) (*TokenPair, error)

RefreshToken 使用refresh token刷新access token

func (*JWT) ShouldRefresh

func (j *JWT) ShouldRefresh(token string, threshold int64) (bool, error)

ShouldRefresh 检查access token是否应该刷新(例如:剩余时间小于阈值)

func (*JWT) VerifyAccessToken

func (j *JWT) VerifyAccessToken(token string) (*Claims, error)

VerifyAccessToken 验证access token

func (*JWT) VerifyRefreshToken

func (j *JWT) VerifyRefreshToken(token string) (*Claims, error)

VerifyRefreshToken 验证refresh 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)

Jump to

Keyboard shortcuts

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