Documentation
¶
Index ¶
Constants ¶
View Source
const ( TokenHeaderKey = "X-Token" TokenQueryStringKey = "token" )
Variables ¶
This section is empty.
Functions ¶
func MustParseJWTUser ¶
MustParseJWTUser 解析 jwt User 信息。如果是静默模式(SilentMode=true), User.ID 可能为零
Types ¶
type IToken ¶
type IToken interface { // SetIssuer 设置 token 发行人,默认为 "go-pkg" SetIssuer(issuer string) IToken // SetDuration 设置 token 过期时长,默认为 24h SetDuration(d time.Duration) IToken // SetSecret 设置 token 加密密钥,默认 "go-pkg.JwtSecret" SetSecret(secret []byte) IToken // SetData 设置 token 扩展数据 SetData(key string, val string) IToken GetUser(fun httpcontext.ToRole) (*httpcontext.User, error) // IsStateful 是否为有状态 jwt token // 主要用于解决 jwt token 无状态,颁发后不可控。需要业务端注入处理函数 IsStateful() bool // IsExpired 是否过期 IsExpired() bool // Refresh 刷新 token Refresh() // RefreshNear 自动刷新 token,如果当前时间临近过期时间 RefreshNear(d time.Duration) // ToString 转成 token 字符串 ToString() (string, error) }
func NewStatefulToken ¶
func NewStatefulToken(user httpcontext.User, handler StatefulStore) IToken
NewStatefulToken 初始化有状态的 Token 默认发行人为 "go-pkg",可以通过 WithIssuer 修改; 默认有效期为 24h,可以通过 WithDuration 设置有效时长
func NewToken ¶
func NewToken(user httpcontext.User) IToken
NewToken 初始化 Token 默认发行人为 "go-pkg",可以通过 WithIssuer 修改; 默认有效期为 24h,可以通过 WithDuration 设置有效时长
func ParseTokenWithGin ¶
ParseTokenWithGin 通过 gin.Context 初始化 token 从 gin.Context 优先读取 http header 中的 X-Token 值;如果不存在,则读取 query string 中的 token 值
type Option ¶
type Option struct { // 角色转化函数,转换成角色 IRole RoleConvert httpcontext.ToRole // 过期自动刷新临界时长。零则表示不自动刷新 RefreshDuration time.Duration // token 加密密钥。默认为 "go-pkg.JwtSecret" Secret []byte // 是否开启静默模式。true-开启:鉴权失败,不注入用户信息;false-关闭。鉴权失败阻断,并抛出错误 SilentMode bool }
Option jwt 配置参数
type StatefulStore ¶
type StatefulStore interface { // Save token 状态存储器 Save(userID uint, token string, expireTs int64) error // Check token 状态检查器 Check(userID uint, token string) error // Remove 删除指定 token Remove(userID uint, token string) error // Clean 清理用户的所有 token Clean(userID uint) error }
StatefulStore 状态存储
Click to show internal directories.
Click to hide internal directories.