Skip to content

包函数 ​

New ​

go
func New(cfg Config) (*Processor, error)

创建新的 JWT Processor。使用 DefaultConfig() 获取默认配置,修改必要字段后传入。

参数 ​

参数类型说明
cfgConfig配置项

返回值 ​

返回类型说明
processor*ProcessorJWT 处理器
errerror配置验证失败时返回错误

示例 ​

go
package main

import (
	"fmt"

	"github.com/cybergodev/jwt"
)

func main() {
	cfg := jwt.DefaultConfig()
	cfg.SecretKey = "hmac-key-that-has-at-least-32-bytes!"

	processor, err := jwt.New(cfg)
	if err != nil {
		panic(err)
	}
	defer processor.Close()

	fmt.Println("Processor created successfully")
}

错误 ​

错误触发条件
ErrInvalidConfig配置项不合法
ErrInvalidSecretKey密钥缺失、不足 32 字节、弱密钥、类型错误或 ECDSA 曲线不匹配
ErrInvalidSigningMethod不支持的签名算法

DefaultConfig ​

go
func DefaultConfig() Config

返回带有合理默认值的配置。

返回值 ​

返回类型说明
configConfig默认配置

默认值 ​

字段默认值
AccessTokenTTL15 * time.Minute
RefreshTokenTTL7 * 24 * time.Hour
Issuer"jwt-service"
SigningMethodSigningMethodHS256
RateLimitRate100
RateLimitWindowtime.Minute
BlacklistDefaultBlacklistConfig()

示例 ​

go
cfg := jwt.DefaultConfig()
cfg.SecretKey = "hmac-key-that-has-at-least-32-bytes!"
// 根据需要修改其他字段

DefaultBlacklistConfig ​

go
func DefaultBlacklistConfig() BlacklistConfig

返回带有合理默认值的黑名单配置。DefaultBlacklistConfig 是自定义黑名单参数的推荐起点:先取默认值,再覆盖需要调整的字段,最后赋给 Config.Blacklist。

返回值 ​

返回类型说明
configBlacklistConfig默认黑名单配置

默认值 ​

字段默认值
CleanupInterval5 * time.Minute
MaxSize100000
EnableAutoCleanuptrue

示例 ​

go
package main

import (
	"fmt"
	"time"

	"github.com/cybergodev/jwt"
)

func main() {
	blacklist := jwt.DefaultBlacklistConfig()
	blacklist.CleanupInterval = time.Minute // 覆盖需要调整的字段,其余保留默认值

	fmt.Println(blacklist.CleanupInterval)   // 输出:1m0s
	fmt.Println(blacklist.MaxSize)           // 输出:100000
	fmt.Println(blacklist.EnableAutoCleanup) // 输出:true
}

NewNumericDate ​

go
func NewNumericDate(t time.Time) NumericDate

从 time.Time 创建 NumericDate。NewNumericDate 常用于显式构造 RegisteredClaims 的时间声明字段(如 ExpiresAt、NotBefore)。

参数 ​

参数类型说明
ttime.Time时间值

返回值 ​

返回类型说明
dateNumericDateJWT 数字日期

示例 ​

go
package main

import (
	"fmt"
	"time"

	"github.com/cybergodev/jwt"
)

func main() {
	date := jwt.NewNumericDate(time.Unix(1700000000, 0))

	b, err := date.MarshalJSON()
	if err != nil {
		panic(err)
	}
	fmt.Println(string(b)) // 输出:1700000000
}

NewRateLimiter ​

go
func NewRateLimiter(maxRate int, window time.Duration) *RateLimiter

创建令牌桶限流器。

参数 ​

参数类型说明
maxRateint窗口内最大请求数(≤0 时默认 100)
windowtime.Duration时间窗口(≤0 时默认 1 分钟)

返回值 ​

返回类型说明
limiter*RateLimiter限流器实例