token

package module
v0.20.0 Latest Latest
Warning

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

Go to latest
Published: Mar 27, 2026 License: MIT Imports: 10 Imported by: 0

README

token

token 是 infrago 的令牌模块(module: github.com/infrago/token)。

包定位

  • 类型:模块
  • 作用:统一 token 的签发、验证、吊销,并支持 payload 在 token/store/hybrid 三种模式。

设计(v1)

模块只保留两个可插拔组件:

  • Signer:签发和验证 token(算法层)
  • Driver:存储能力(revoke 必选,payload 可选)

Driver 统一负责:

  • Open/Close
  • RevokeToken/RevokeTokenID
  • RevokedToken/RevokedTokenID
  • SavePayload/LoadPayload/DeletePayload

配置

[token]
signer = "default"
driver = "default"
payload = "token"  # token | store | hybrid
secret = "token-secret" # 为空时默认使用 infra.Project

[token.setting]
# signer 和 driver 都可读取本节配置

payload 模式

  • token:payload 只在 token 内,driver 主要用于 revoke
  • store:payload 以 driver 为准
  • hybrid:token payload + store payload 合并(store 优先)

默认实现

  • signer=default:当前内置签名方式
  • driver=default:内存 revoke + 内存 payload

Documentation

Index

Constants

View Source
const (
	PayloadToken  = "token"
	PayloadStore  = "store"
	PayloadHybrid = "hybrid"
)

Variables

This section is empty.

Functions

func Register

func Register(name string, value Any)

func RegisterDriver

func RegisterDriver(name string, driver Driver)

func RegisterSigner

func RegisterSigner(name string, signer Signer)

func RevokeToken

func RevokeToken(token string, exp int64) error

func RevokeTokenID

func RevokeTokenID(tokenID string, exp int64) error

func Sign

func Sign(req infra.Token) (string, error)

func Verify

func Verify(token string) (infra.Token, error)

Types

type Configurable

type Configurable interface {
	Configure(setting Map)
}

type Driver

type Driver interface {
	Open() error
	Close() error

	SavePayload(tokenID string, payload Map, exp int64) error
	LoadPayload(tokenID string) (Map, bool, error)
	DeletePayload(tokenID string) error

	RevokeToken(token string, exp int64) error
	RevokeTokenID(tokenID string, exp int64) error
	RevokedToken(token string) (bool, error)
	RevokedTokenID(tokenID string) (bool, error)
}

type DriverEntry

type DriverEntry struct {
	Name   string
	Driver Driver
}

type Signer

type Signer interface {
	Sign(req infra.Token) (string, error)
	Verify(token string) (infra.Token, error)
}

type SignerEntry

type SignerEntry struct {
	Name   string
	Signer Signer
}

Jump to

Keyboard shortcuts

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