Skip to content

udugong/token

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

token

令牌管理

go version

>=1.20

usage

下载安装:go get github.com/udugong/token@latest

jwtcore package

jwtcore包提供了生成与校验 json web token 的方法,使您可以通过简单的配置快速使用 jwt 的生成与校验功能。该功能是基于 golang-jwt 进行封装的。

  • 利用泛型可以自定义 claims 内容
  • 生成/校验 token

使用方法

  1. 定义 Claims 结构体

    定义 Claims 需要嵌入 jwtcore.RegisteredClaims 或者实现 jwtcore.Claims[T jwt.Claims] 接口,其余成员可以自行定义。

    import "github.com/udugong/token/jwtcore"
    
    type Claims struct {
    	Uid int64 `json:"uid"` // 用户ID
    	// Nickname string `json:"nickname"` // 昵称
    
    	// 嵌入
    	jwtcore.RegisteredClaims
    }
  2. 创建令牌管理器

    创建令牌管理器需要传两个参数:签名密钥、过期时间,以及插入实现 jwtcore.Claims[T jwt.Claims] 接口的具体类型。该服务默认使用 SHA256 作为签名方式,因此加密密钥与解密密钥相同。

    // 创建令牌管理器
    key := "sign key"
    tokenManager := jwtcore.NewTokenManager[Claims](key, 10*time.Minute)
  3. 生成 jwt

    // 传入 Claims
    token, err := tokenManager.GenerateToken(Claims{Uid: 1})
    if err != nil {
    	panic(err)
    }
    fmt.Println(token)
  4. 校验 token

    // 校验 token 并解析 claims
    clm, err := tokenManager.VerifyToken(token)
    if err != nil {
    	fmt.Println(err.Error())
    }
    fmt.Printf("%d\n", clm.Uid) // 1