Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Manager ¶
type Manager struct { Store Propagator SessCtxKey string // 在 context 中的备份,方便使用 }
Manager 为了简化使用,提供了一些常用的方法
func (*Manager) GetSession ¶
GetSession attempts to retrieve the Session from the context. If successful, it caches the Session instance in the UserValues of the context.
func (*Manager) InitSession ¶
InitSession initializes a session with the given id. It generates a new session and injects the id into the context response.
func (*Manager) RefreshSession ¶
RefreshSession refreshes the session using the provided context. It returns the updated session or an error if the refresh fails.
type Propagator ¶
type Propagator interface { // Inject 将 session id 注入到里面 // Inject 必须是幂等的 Inject(id string, writer http.ResponseWriter) error // Extract 将 session id 从 http.Request 中提取出来 // 例如从 cookie 中将 session id 提取出来 Extract(req *http.Request) (string, error) // Remove 将 session id 从 http.ResponseWriter 中删除 // 例如删除对应的 cookie Remove(writer http.ResponseWriter) error }
Propagator 处理请求中的 session id
type Session ¶
type Session interface { // Get 获取 session 的值 Get(ctx context.Context, key string) (string, error) // Set 设置 session 的值 Set(ctx context.Context, key string, val string) error // ID 获取 session 的 ID ID() string }
Session 这个通常是一个接口,用来表示一个 session 结构体必须要实现的方法 session 对应的结构体,需要存在 Store 里面
type Store ¶
type Store interface { // Generate 生成一个 session Generate(ctx context.Context, id string) (Session, error) // Refresh 这种设计是一直用同一个 id 的 // 如果想支持 Refresh 换 ID,那么可以重新生成一个,并移除原有的 // 又或者 Refresh(ctx context.Context, id string) (Session, error) // 其中返回的是一个新的 Session Refresh(ctx context.Context, id string) error Remove(ctx context.Context, id string) error Get(ctx context.Context, id string) (Session, error) }
Click to show internal directories.
Click to hide internal directories.