Documentation ¶
Overview ¶
Package token 传统令牌的验证方式
Index ¶
- func DefaultBuildResponse(access, refresh string, ae, re int) any
- func SecurityScheme(id string, desc web.LocaleStringer) *openapi.SecurityScheme
- type BuildResponseFunc
- type Item
- type Response
- type Store
- type Token
- func (t *Token[T]) Delete(u T) error
- func (t *Token[T]) GetInfo(ctx *web.Context) (T, bool)
- func (t *Token[T]) Logout(ctx *web.Context) error
- func (t *Token[T]) Middleware(next web.HandlerFunc, method, _, _ string) web.HandlerFunc
- func (t *Token[T]) New(ctx *web.Context, v T, status int, headers ...string) web.Responser
- func (t *Token[T]) Refresh(ctx *web.Context, status int, headers ...string) web.Responser
- type UserData
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DefaultBuildResponse ¶
DefaultBuildResponse BuildResponseFunc 的默认实现
func SecurityScheme ¶
func SecurityScheme(id string, desc web.LocaleStringer) *openapi.SecurityScheme
SecurityScheme 声明支持 openapi 的 openapi.SecurityScheme 对象
Types ¶
type BuildResponseFunc ¶
BuildResponseFunc 构建将令牌返回给客户的结构体
access 访问令牌是必须的; refresh 刷新令牌; accessExp 表示访问令牌的过期时间; refreshExp 表示刷新令牌的过期时间;
NOTE: 之所以定义此方法,主要是用于让部分未内置在框架中的 mimetype 也可以方便处理。
type Response ¶
type Response struct { XMLName struct{} `json:"-" cbor:"-" xml:"token" yaml:"-"` AccessToken string `json:"access_token" xml:"access_token" cbor:"access_token" comment:"access token"` // 访问令牌 RefreshToken string `json:"refresh_token" xml:"refresh_token" cbor:"refresh_token" comment:"refresh token"` // 刷新令牌 AccessExp int `json:"access_exp" xml:"access_exp,attr" cbor:"access_exp" comment:"access token expired"` // 访问令牌的有效时长,单位为秒 RefreshExp int `json:"refresh_exp" xml:"refresh_exp,attr" cbor:"refresh_exp" comment:"refresh token expired"` // 刷新令牌的有效时长,单位为秒 }
Response 申请令牌时返回的对象
type Store ¶
type Store[V UserData] interface { // 保存数据 // // token 令牌的值; // data 与令牌关联的数据; // ttl 过期时间; Save(token string, data Item[V], ttl time.Duration) error // 通过令牌删除关联数据 DeleteToken(token string) error // 通过 [UserData.GetUID] 删除关联数据 DeleteUID(uid string) error // 获取与令牌 token 关联的数据 // // 如果不存在,应该返回 nil Get(token string) (Item[V], bool, error) }
Store 令牌的存储接口
type Token ¶
type Token[T UserData] struct { // contains filtered or unexported fields }
Token 传统的令牌管理
每次产生两个令牌: 访问令牌可用于普通的中间件验证; 刷新令牌也可以用于验证,但是是一次性的,验证完,刷新令牌和关联的访问令牌都将失效果, 所以刷新令牌一般只能用于申请下一次的令牌;
T 为每次登录之后需要与令牌关联的数据,在登录失效之前,Store 将一直保留该数据,不会再次访问数据系统。
func New ¶
func New[T UserData]( s web.Server, store Store[T], accessExp, refreshExp time.Duration, invalidTokenProblemID string, br BuildResponseFunc, ) *Token[T]
New 声明 Token 对象
accessExp,refreshExp 表示访问令牌和刷新令牌的有效时长,refreshExp 必须大于 accessExp; invalidTokenProblemID 令牌无效时返回的错误代码。比如将访问令牌当刷新令牌使用等; br 用于生成向客户端反馈令牌信息的结构体方法,默认为 DefaultBuildResponse;
func (*Token[T]) Middleware ¶
func (t *Token[T]) Middleware(next web.HandlerFunc, method, _, _ string) web.HandlerFunc