JWT使用

JWT简单使用

首先先安装JWT,我用的版本是V5

go get -u github.com/golang-jwt/jwt/v5

导入JWT包

import "github.com/golang-jwt/jwt/v5"

创捷结构体

type MyClaims struct {
	Username string `json:"username"`
	jwt.RegisteredClaims
}

1.创建JWT

func main() {
	// MapClaims map
	mySigningkey := []byte("woshiyigedashuaige")
	//StandardClaims
	c := MyClaims{
		Username: "krien",
		RegisteredClaims: jwt.RegisteredClaims{
		// nbf: 定义在什么时间之前,该jwt都是不可用的
			NotBefore: jwt.NewNumericDate(time.Now()),
		// ExpiresAt:jwt的过期时间,这个过期时间必须要大于签发时间
			ExpiresAt: jwt.NewNumericDate(time.Now().Add(time.Hour)),
		// jwt签发者
			Issuer:    "krien",
		},
	}
	// NewWithClaims使用指定的签名方法和声明创建一个新的令牌。类似加密
	t := jwt.NewWithClaims(jwt.SigningMethodHS256, c)
	s, e := t.SignedString(mySigningkey)
	if e != nil {
		fmt.Printf("%s", e)
	}
	// fmt.Println(s)

执行返回 token

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImtyaWVuIiwiaXNzIjoia3JpZW4iLCJleHAiOjE2ODE4MTYwMTgsIm5iZiI6MTY4MTgxMjQxOH0.AhsRuYBgDohWbDelJAe82CkslVjA_vVxBeyK3psOl74

2.解析JWT

func:特殊的回调函数,需要固定接收 * Token 类型指针,返回 interface{} 和 err,interface{} 就是我们的密钥 mySigningkey

	token, err := jwt.ParseWithClaims(s, &MyClaims{}, func(token *jwt.Token) (interface{}, error) {
	// 需要return你的密钥
		return mySigningkey, nil
	})
	if err != nil {
		fmt.Printf("%s", err)
		return
	}

	fmt.Println(token.Claims.(*MyClaims).Username)
[Running] go run "c:\Users\79120\Desktop\GoPro\mypro\test1085.go"
krien

[Done] exited with code=0 in 6.806 seconds
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值