Skip to content

Claims

Claims

go
type Claims struct {
    UserID      string         `json:"user_id,omitempty"`
    Username    string         `json:"username,omitempty"`
    Role        string         `json:"role,omitempty"`
    Permissions []string       `json:"permissions,omitempty"`
    Scopes      []string       `json:"scopes,omitempty"`
    Extra       map[string]any `json:"extra,omitempty"`
    SessionID   string         `json:"session_id,omitempty"`
    ClientID    string         `json:"client_id,omitempty"`
    RegisteredClaims
}

内置 Claims 结构,包含常用业务字段和标准 JWT 字段。

struct

字段

字段类型说明
UserIDstring用户 ID
Usernamestring用户名
Rolestring角色
Permissions[]string权限列表
Scopes[]string作用域列表
Extramap[string]any自定义扩展字段
SessionIDstring会话 ID
ClientIDstring客户端 ID
RegisteredClaimsRegisteredClaims标准 JWT 字段

验证规则

Validate() 方法检查 UserIDUsername 至少有一个非空。

Processor 在令牌创建和验证时会执行额外的深度验证(通过内部 validateClaims 函数):

规则限制
字符串字段长度最大 256 字符
数组字段大小最大 100 项
Extra 字段数最大 50 个键
Extra 值类型仅允许 string[]string,嵌套 map 和其他类型拒绝
控制字符除 tab、换行、回车外的控制字符拒绝
注入模式检测包含 HTML/SQL/路径遍历等危险模式时拒绝

方法

方法签名说明
GetRegisteredClaimsfunc (c *Claims) GetRegisteredClaims() *RegisteredClaims返回嵌入的标准字段
Validatefunc (c *Claims) Validate() error检查 UserID 或 Username 至少有一个非空

RegisteredClaims

go
type RegisteredClaims struct {
    Issuer    string        `json:"iss,omitempty"`
    Subject   string        `json:"sub,omitempty"`
    Audience  StringOrSlice `json:"aud,omitempty"`
    ExpiresAt NumericDate   `json:"exp"`
    NotBefore NumericDate   `json:"nbf"`
    IssuedAt  NumericDate   `json:"iat"`
    ID        string        `json:"jti,omitempty"`
    TokenType string        `json:"token_type,omitempty"`
}

标准 JWT 注册声明(RFC 7519)。

struct

字段

字段类型JSON Tag说明
Issuerstringiss签发者
Subjectstringsub主题
AudienceStringOrSliceaud受众
ExpiresAtNumericDateexp过期时间
NotBeforeNumericDatenbf生效时间
IssuedAtNumericDateiat签发时间
IDstringjti令牌 ID
TokenTypestringtoken_type令牌类型(accessrefresh,见 TokenType 常量