Documentation
¶
Index ¶
- Variables
- func GenToken(UserID int64, Username string) (atoken, rtoken string, err error)
- func GenTokenFull(UserID int64, Username, scope string, orgID, deptID int64) (atoken, rtoken string, err error)
- func GenTokenWithScope(UserID int64, Username, scope string) (atoken, rtoken string, err error)
- func Init(AMinute, RHour time.Duration, TokenIssuer string)
- func RefreshToken(atoken, rtoken string) (newAtoken, newRtoken string, err error)
- func SetSecretKey(secret string) error
- func SetSecretKeys(secrets ...string) error
- type MyClaim
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 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 ¶
GenTokenWithScope 颁发携带权限声明的 token(组织身份为零值)。 需要组织身份时使用 GenTokenFull。
func RefreshToken ¶
RefreshToken 通过 refresh token 刷新 atoken 先完整校验 refresh token(算法、签发者、有效期),再尝试从旧 access token 恢复用户信息。 刷新后的 token 保留权限声明与组织身份(OrgID/DeptID)。
func SetSecretKey ¶
SetSecretKey 注入单个 JWT 签名密钥(同时作为验证密钥)。 出于安全考虑,密钥长度必须至少 32 字节;未注入密钥时签发与验证都会返回错误。
func SetSecretKeys ¶
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 签发时为零值)。
Click to show internal directories.
Click to hide internal directories.