package main
import (
"github.com/golang-jwt/jwt/v4"
"math/rand"
"testing"
"time"
)
func TestJwtCreate(t *testing.T) {
//定义 私钥
keyword := "hello world"
//定义结构体
type myClaims struct {
Username string
Password string
//这个位置是与原来的不同的地方,原来写的是jwt.StandardClaims
//但是jwt.StandardClaims已经废弃了
//替代的是jwt.RegisteredClaims
jwt.RegisteredClaims
}
//这个位置也是不同的地方
//新版本的ExpiresAt和IssuedAt的类型是*jwt.NumericDate指针类型
//而jwt.NumericDate中的Time字段是 time.Time类型
//新版本的ExpiresAt和IssuedAt写法如下:
ExpiresAt := jwt.NumericDate{
Time: time.Now().Add(time.Hour),
}
IssuedAt := jwt.NumericDate{
Time: time.Now(),
}
claims := &myClaims{
//测试数据中的username和password
Username: "admin",
Password: "123456",
RegisteredClaims: jwt.RegisteredClaims{
//Issuer 签发人是字符串
Issuer: "xuser",
Subject: "",
Audience: nil,
ExpiresAt: &ExpiresAt,
IssuedAt: &IssuedAt,
ID: "",
},
}
//NewWithClaims使用指定的签名方法和声明创建新token。
//func NewWithClaims(method SigningMethod, claims Claims) *Token
//jwt.SigningMethodHS256代表其方法
//claims是之前创建的claims
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
//func (t *Token) SignedString(key interface{}) (string, error)
//SignedString创建并返回一个完整的签名JWT。使用令牌中指定的签名方法对令牌进行签名。
//keyword是之前自定义的私钥,返回的结果是signedString字符串类型
signedString, err := token.SignedString([]byte(keyword))
if err != nil {
t.Log(err)
return
}
t.Log(signedString)
}
本文暂时没有评论,来添加一个吧(●'◡'●)