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
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 {
// 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) // UpdateClaims 修改 claims 的数据 // 但是因为 jwt 本身是不可变的,所以实际上这里是重新生成了一个 jwt 的 token // 必须传入正确的 SSID UpdateClaims(ctx *gctx.Context, claims Claims) error // RenewAccessToken 刷新并且返回一个新的 access token // 这个过程会校验长 token 的合法性 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.