security

package
v0.1.5 Latest Latest
Warning

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

Go to latest
Published: Nov 26, 2025 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultNonceTTL = 5 * time.Minute // Default nonce expiration | 默认nonce过期时间
	NonceLength     = 32              // Nonce byte length | Nonce字节长度
	NonceKeySuffix  = "nonce:"        // Key suffix after prefix | 前缀后的键后缀
)

Constants for nonce | Nonce常量

View Source
const (
	DefaultRefreshTTL  = 30 * 24 * time.Hour // 30 days | 30天
	DefaultAccessTTL   = 2 * time.Hour       // 2 hours | 2小时
	RefreshTokenLength = 32                  // Refresh token byte length | 刷新令牌字节长度
	RefreshKeySuffix   = "refresh:"          // Key suffix after prefix | 前缀后的键后缀
)

Constants for refresh token | 刷新令牌常量

Variables

View Source
var (
	ErrInvalidRefreshToken = fmt.Errorf("invalid refresh token")
	ErrRefreshTokenExpired = fmt.Errorf("refresh token expired")
	ErrInvalidRefreshData  = fmt.Errorf("invalid refresh token data")
)

Error variables | 错误变量

View Source
var (
	ErrInvalidNonce = fmt.Errorf("invalid or expired nonce")
)

Error variables | 错误变量

Functions

This section is empty.

Types

type NonceManager

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

NonceManager Nonce manager for anti-replay attacks | Nonce管理器,用于防重放攻击

func NewNonceManager

func NewNonceManager(storage adapter.Storage, prefix string, ttl time.Duration) *NonceManager

NewNonceManager Creates a new nonce manager | 创建新的Nonce管理器 prefix: key prefix (e.g., "satoken:" or "" for Java compatibility) | 键前缀(如:"satoken:" 或 "" 兼容Java) ttl: time to live, default 5 minutes | 过期时间,默认5分钟

func (*NonceManager) Generate

func (nm *NonceManager) Generate() (string, error)

Generate Generates a new nonce and stores it | 生成新的nonce并存储 Returns 64-char hex string | 返回64字符的十六进制字符串

func (*NonceManager) IsValid

func (nm *NonceManager) IsValid(nonce string) bool

IsValid Checks if nonce is valid without consuming it | 检查nonce是否有效(不消费)

func (*NonceManager) Verify

func (nm *NonceManager) Verify(nonce string) bool

Verify Verifies nonce and consumes it (one-time use) | 验证nonce并消费它(一次性使用) Returns false if nonce doesn't exist or already used | 如果nonce不存在或已使用则返回false

func (*NonceManager) VerifyAndConsume

func (nm *NonceManager) VerifyAndConsume(nonce string) error

VerifyAndConsume Verifies and consumes nonce, returns error if invalid | 验证并消费nonce,无效时返回错误

type RefreshTokenInfo

type RefreshTokenInfo struct {
	RefreshToken string `json:"refreshToken"` // Refresh token (long-lived) | 刷新令牌(长期有效)
	AccessToken  string `json:"accessToken"`  // Access token (short-lived) | 访问令牌(短期有效)
	LoginID      string `json:"loginID"`      // User login ID | 用户登录ID
	Device       string `json:"device"`       // Device type | 设备类型
	CreateTime   int64  `json:"createTime"`   // Creation timestamp | 创建时间戳
	ExpireTime   int64  `json:"expireTime"`   // Expiration timestamp | 过期时间戳
}

RefreshTokenInfo refresh token information | 刷新令牌信息

func (*RefreshTokenInfo) MarshalBinary

func (r *RefreshTokenInfo) MarshalBinary() ([]byte, error)

MarshalBinary implements encoding.BinaryMarshaler for Redis storage | 实现encoding.BinaryMarshaler接口用于Redis存储

func (*RefreshTokenInfo) UnmarshalBinary

func (r *RefreshTokenInfo) UnmarshalBinary(data []byte) error

UnmarshalBinary implements encoding.BinaryUnmarshaler for Redis storage | 实现encoding.BinaryUnmarshaler接口用于Redis存储

type RefreshTokenManager

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

RefreshTokenManager Refresh token manager | 刷新令牌管理器

func NewRefreshTokenManager

func NewRefreshTokenManager(storage adapter.Storage, prefix, keyPrefix string, cfg *config.Config) *RefreshTokenManager

NewRefreshTokenManager Creates a new refresh token manager | 创建新的刷新令牌管理器 prefix: key prefix (e.g., "satoken:" or "" for Java compatibility) | 键前缀(如:"satoken:" 或 "" 兼容Java) cfg: configuration, uses Timeout for access token TTL | 配置,使用Timeout作为访问令牌有效期

func (*RefreshTokenManager) GenerateTokenPair

func (rtm *RefreshTokenManager) GenerateTokenPair(loginID, device string, accessTokenOverride ...string) (*RefreshTokenInfo, error)

GenerateTokenPair Generates access token and refresh token pair | 生成访问令牌和刷新令牌对

func (*RefreshTokenManager) GetRefreshTokenInfo

func (rtm *RefreshTokenManager) GetRefreshTokenInfo(refreshToken string) (*RefreshTokenInfo, error)

GetRefreshTokenInfo Gets refresh token information | 获取刷新令牌信息

func (*RefreshTokenManager) IsValid

func (rtm *RefreshTokenManager) IsValid(refreshToken string) bool

IsValid Checks if refresh token is valid | 检查刷新令牌是否有效

func (*RefreshTokenManager) RefreshAccessToken

func (rtm *RefreshTokenManager) RefreshAccessToken(refreshToken string) (*RefreshTokenInfo, error)

RefreshAccessToken Generates new access token using refresh token | 使用刷新令牌生成新的访问令牌

func (*RefreshTokenManager) RevokeRefreshToken

func (rtm *RefreshTokenManager) RevokeRefreshToken(refreshToken string) error

RevokeRefreshToken Revokes a refresh token | 撤销刷新令牌

Jump to

Keyboard shortcuts

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