apptoken

package
v1.61.0 Latest Latest
Warning

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

Go to latest
Published: Aug 17, 2026 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrorInvalidToken = errors.New("verify Token Failed")
	// ErrSecretNotConfigured 表示 JWT 签名密钥尚未注入,签发与验证都会拒绝执行。
	ErrSecretNotConfigured = errors.New("JWT secret key is not configured, call SetSecretKey first")
	// ErrUnsupportedSigningMethod 表示 token 使用了签名算法白名单之外的算法。
	ErrUnsupportedSigningMethod = errors.New("JWT signing method is not allowed")
	// ErrEmptySecret 表示注入的密钥列表为空或包含空密钥。
	ErrEmptySecret = errors.New("JWT secret list is empty")
)

Functions

func GenToken

func GenToken(UserID int64, Username string) (atoken, rtoken string, err error)

GenToken 颁发token access token 和 refresh token(无权限声明)。

func GenTokenFull added in v1.11.0

func GenTokenFull(UserID int64, Username, scope string, orgID, deptID int64) (atoken, rtoken string, err error)

GenTokenFull 颁发携带权限声明与组织身份的 token。 scope 为逗号分隔权限标识;orgID/deptID 为数据权限范围 (业务无组织概念时传 0,行为与 GenTokenWithScope 一致)。

func GenTokenWithScope

func GenTokenWithScope(UserID int64, Username, scope string) (atoken, rtoken string, err error)

GenTokenWithScope 颁发携带权限声明的 token(组织身份为零值)。 需要组织身份时使用 GenTokenFull。

func Init

func Init(AMinute, RHour time.Duration, TokenIssuer string)

Init 初始化设置token-过期时间、重新刷新时间、token签名

func RefreshToken

func RefreshToken(atoken, rtoken string) (newAtoken, newRtoken string, err error)

RefreshToken 通过 refresh token 刷新 atoken 先完整校验 refresh token(算法、签发者、有效期),再尝试从旧 access token 恢复用户信息。 刷新后的 token 保留权限声明与组织身份(OrgID/DeptID)。

func SetSecretKey

func SetSecretKey(secret string) error

SetSecretKey 注入单个 JWT 签名密钥(同时作为验证密钥)。 出于安全考虑,密钥长度必须至少 32 字节;未注入密钥时签发与验证都会返回错误。

func SetSecretKeys

func SetSecretKeys(secrets ...string) error

SetSecretKeys 注入 JWT 密钥列表,支持密钥轮换: 列表首个密钥用于签发新 token;全部密钥均可用于验证(轮换宽限期)。 每个密钥长度必须至少 32 字节。

Types

type MyClaim

type MyClaim struct {
	UserID    int64  `json:"userId"`
	UserEmail string `json:"userEmail"`
	Scope     string `json:"scope,omitempty"`  // 权限标识,逗号分隔
	OrgID     int64  `json:"orgId,omitempty"`  // 组织 ID(数据权限)
	DeptID    int64  `json:"deptId,omitempty"` // 部门 ID(数据权限)
	jwt.RegisteredClaims
}

MyClaim 是 Access Token 携带的业务声明。 Scope 是权限标识列表(逗号分隔);OrgID/DeptID 是数据权限范围, 由 GenTokenFull 写入(GenTokenWithScope 签发时为零值)。

func VerifyToken

func VerifyToken(tokenID string) (*MyClaim, error)

VerifyToken 验证Token

Jump to

Keyboard shortcuts

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