Documentation
¶
Index ¶
- Constants
- func CheckLoginMiddleware() gin.HandlerFunc
- func RenewAccessToken(ctx *gctx.Context) error
- func SetDefaultProvider(sp Provider)
- func UpdateClaims(ctx *gctx.Context, claims Claims) error
- type Builder
- type Claims
- type MemorySession
- func (m *MemorySession) Claims() Claims
- func (m *MemorySession) Del(ctx context.Context, key string) error
- func (m *MemorySession) Destroy(ctx context.Context) error
- func (m *MemorySession) Get(ctx context.Context, key string) ekit.AnyValue
- func (m *MemorySession) Set(ctx context.Context, key string, val any) error
- func (m *MemorySession) UpdateClaims(ctx *gctx.Context, claims Claims) error
- type MiddlewareBuilder
- type Provider
- type Session
- type TokenCarrier
Constants ¶
View Source
const CtxSessionKey = "_session"
Variables ¶
This section is empty.
Functions ¶
func CheckLoginMiddleware ¶
func CheckLoginMiddleware() gin.HandlerFunc
func RenewAccessToken ¶
func SetDefaultProvider ¶
func SetDefaultProvider(sp Provider)
Types ¶
type Builder ¶
type Builder struct {
// contains filtered or unexported fields
}
Builder 是一个辅助接口,便于构造 Session
func NewSessionBuilder ¶
NewSessionBuilder 创建一个 Builder 用于构造 Session 默认使用 defaultProvider
func (*Builder) SetProvider ¶
type MemorySession ¶
type MemorySession struct {
// contains filtered or unexported fields
}
MemorySession 一般用于测试
func NewMemorySession ¶
func NewMemorySession(cl Claims) *MemorySession
func (*MemorySession) Claims ¶
func (m *MemorySession) Claims() Claims
func (*MemorySession) UpdateClaims ¶
func (m *MemorySession) UpdateClaims(ctx *gctx.Context, claims Claims) error
type MiddlewareBuilder ¶
type MiddlewareBuilder struct {
// 当 token 的有效时间少于这个值的时候,就会刷新一下 token
Threshold time.Duration
// contains filtered or unexported fields
}
MiddlewareBuilder 登录校验
func (*MiddlewareBuilder) Build ¶
func (b *MiddlewareBuilder) Build() gin.HandlerFunc
type Provider ¶
type Provider interface {
// NewSession 将会初始化 Session
// 其中 jwtData 将编码进去 jwt 中
// sessData 将被放进去 Session 中
NewSession(ctx *gctx.Context, uid int64, jwtData map[string]string,
sessData map[string]any) (Session, error)
// Get 尝试拿到 Session,如果没有,返回 error
// Get 必须校验 Session 的合法性。
// 也就是,用户可以预期拿到的 Session 永远是没有过期,直接可用的
Get(ctx *gctx.Context) (Session, error)
// Destroy 销毁 Session,一般用在退出登录这种地方
Destroy(ctx *gctx.Context) error
// UpdateClaims 修改 claims 的数据
// 但是因为 jwt 本身是不可变的,所以实际上这里是重新生成了一个 jwt 的 token
// 必须传入正确的 SSID
UpdateClaims(ctx *gctx.Context, claims Claims) error
// RenewAccessToken 刷新并且返回一个新的 access token
// 注意,必须是之前的 AccessToken 快要过期但是还没过期的时候
RenewAccessToken(ctx *gctx.Context) error
}
Provider 定义了 Session 的整个管理机制。 所有的 Session 都必须支持 jwt
func DefaultProvider ¶
func DefaultProvider() Provider
type Session ¶
type Session interface {
// Set 将数据写入到 Session 里面
Set(ctx context.Context, key string, val any) error
// Get 从 Session 中获取数据,注意,这个方法不会从 JWT 里面获取数据
Get(ctx context.Context, key string) ekit.AnyValue
// Del 删除对应的数据
Del(ctx context.Context, key string) error
// Destroy 销毁整个 Session
Destroy(ctx context.Context) error
// Claims 编码进去了 JWT 里面的数据
Claims() Claims
}
Session 混合了 JWT 的设计。
Click to show internal directories.
Click to hide internal directories.