store

package
v0.4.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 4, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Overview

Package store defines auth session persistence used by auth/jwt. Package store 定义 auth/jwt 使用的认证会话持久化。

Index

Constants

View Source
const DefaultMaxSessionsPerUser = 255

DefaultMaxSessionsPerUser is the default limit for built-in session stores. DefaultMaxSessionsPerUser 是内置会话存储的默认单用户上限。

Variables

View Source
var ErrSessionLimitReached = errors.New("session limit reached")

ErrSessionLimitReached reports that a user's session limit prevents creation. ErrSessionLimitReached 表示用户的会话数量已达到上限,无法新增。

View Source
var ErrStoreUnavailable = errors.New("token store unavailable")

ErrStoreUnavailable reports backend unavailability. ErrStoreUnavailable 表示后端不可用。

Functions

This section is empty.

Types

type MemoryStore

type MemoryStore struct {
	// contains filtered or unexported fields
}

MemoryStore keeps sessions in memory. MemoryStore 在内存中保存 session。

func NewMemoryStore

func NewMemoryStore() *MemoryStore

NewMemoryStore returns an in-memory SessionStore with a limit of 255 sessions per user. NewMemoryStore 返回内存版 SessionStore,每个用户最多保存 255 个会话。

func NewMemoryStoreWithLimit added in v0.4.4

func NewMemoryStoreWithLimit(limit int) *MemoryStore

NewMemoryStoreWithLimit sets the maximum number of unexpired sessions per user. Zero disables the limit; negative values panic. NewMemoryStoreWithLimit 设置每个用户未过期会话的数量上限。 零值禁用上限;负数会 panic。

func (*MemoryStore) BumpUserVersion

func (s *MemoryStore) BumpUserVersion(ctx context.Context, userID string) (int64, error)

BumpUserVersion invalidates all sessions for userID. BumpUserVersion 通过提升版本使 userID 的全部 session 失效。

func (*MemoryStore) ClearAllSessions added in v0.1.9

func (s *MemoryStore) ClearAllSessions(ctx context.Context) error

ClearAllSessions removes all stored sessions. ClearAllSessions 清理全部已保存的 session。

func (*MemoryStore) ClearUserSessions added in v0.1.9

func (s *MemoryStore) ClearUserSessions(ctx context.Context, userID string) error

ClearUserSessions removes stored sessions for userID. ClearUserSessions 清理 userID 已保存的 session。

func (*MemoryStore) CreateSession

func (s *MemoryStore) CreateSession(ctx context.Context, sessionID string, state SessionState) error

CreateSession stores a session, returning ErrSessionLimitReached when the user is full. Replacing an existing session for the same user does not consume another slot. CreateSession 保存 session;用户会话已满时返回 ErrSessionLimitReached。 替换同一用户已有的 session 不占用额外名额。

func (*MemoryStore) Prune

func (s *MemoryStore) Prune()

Prune removes expired sessions. Prune 清理过期 session。

func (*MemoryStore) RevokeSession

func (s *MemoryStore) RevokeSession(ctx context.Context, sessionID string) error

RevokeSession deletes a session. RevokeSession 删除 session。

func (*MemoryStore) RotateRefresh

func (s *MemoryStore) RotateRefresh(ctx context.Context, sessionID, userID string, expectedVersion int64, oldRefreshID, newRefreshID string, exp time.Time) (bool, error)

RotateRefresh replaces the refresh state for a session. RotateRefresh 替换某个 session 的 refresh 状态。

func (*MemoryStore) Session

func (s *MemoryStore) Session(ctx context.Context, sessionID string) (SessionState, bool, error)

Session returns the session when still active. Session 返回仍然活跃的 session。

func (*MemoryStore) Sessions added in v0.1.9

func (s *MemoryStore) Sessions(ctx context.Context, userID string) ([]SessionInfo, error)

Sessions returns stored, unexpired sessions for userID. Sessions 返回 userID 已保存且未过期的 session。

func (*MemoryStore) UserVersion

func (s *MemoryStore) UserVersion(ctx context.Context, userID string) (int64, error)

UserVersion returns the current version for userID. UserVersion 返回 userID 的当前版本。

type SessionCleaner added in v0.1.9

type SessionCleaner interface {
	ClearAllSessions(ctx context.Context) error
}

SessionCleaner removes all stored sessions. SessionCleaner 清理全部已保存的 session。

type SessionInfo added in v0.1.9

type SessionInfo struct {
	ID          string
	ExpiresAt   time.Time
	SessionOnly bool
}

SessionInfo is public session metadata for a user. SessionInfo 是用户可见的 session 元数据。

type SessionLister added in v0.1.9

type SessionLister interface {
	Sessions(ctx context.Context, userID string) ([]SessionInfo, error)
}

SessionLister lists stored sessions for one user. SessionLister 列出单个用户已保存的 session。

type SessionState

type SessionState struct {
	UserID      string
	RefreshID   string
	ExpiresAt   time.Time
	SessionOnly bool
}

SessionState stores session state for refresh rotation and revocation. SessionState 保存 refresh 轮换与吊销所需的 session 状态。

type SessionStore

type SessionStore interface {
	UserVersion(ctx context.Context, userID string) (int64, error)
	BumpUserVersion(ctx context.Context, userID string) (int64, error)
	CreateSession(ctx context.Context, sessionID string, state SessionState) error
	Session(ctx context.Context, sessionID string) (SessionState, bool, error)
	RotateRefresh(ctx context.Context, sessionID, userID string, expectedVersion int64, oldRefreshID, newRefreshID string, exp time.Time) (bool, error)
	RevokeSession(ctx context.Context, sessionID string) error
}

SessionStore persists user versions and active sessions. Backend availability failures must be normalized to ErrStoreUnavailable. SessionStore 持久化用户版本与活跃 session。 后端可用性错误必须统一为 ErrStoreUnavailable。

type UserSessionCleaner added in v0.1.9

type UserSessionCleaner interface {
	ClearUserSessions(ctx context.Context, userID string) error
}

UserSessionCleaner removes stored sessions for one user. UserSessionCleaner 清理单个用户已保存的 session。

Directories

Path Synopsis
Package redissession provides Redis-backed auth session storage.
Package redissession provides Redis-backed auth session storage.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL