package main
import (
"fmt"
"github.com/golang-jwt/jwt"
"time"
)
type MyClaims struct {
Username string `json:"username"`
jwt.StandardClaims
}
func main() {
mySingingKey := []byte("wiasdqwesadsafsd")
c := MyClaims{
Username: "jt",
StandardClaims: jwt.StandardClaims{
NotBefore: time.Now().Unix() - 60, //在此之前不可用
ExpiresAt: time.Now().Unix() + 5, //到期时间
Issuer: "jt", //发行人 sub主题 aud用户 iat发布时间
},
}
t := jwt.NewWithClaims(jwt.SigningMethodHS256, c)
fmt.Println("t:", t)
s, err := t.SignedString(mySingingKey)
if err != nil {
fmt.Println("s-err:", err)
}
fmt.Println("生成的s:", s)
//time.Sleep(time.Second * 6)
//验证
token, err := jwt.ParseWithClaims(s, &MyClaims{}, func(token *jwt.Token) (interface{}, error) {
return mySingingKey, nil
})
if err != nil {
fmt.Println(err)
}
fmt.Println("Username:", token.Claims.(*MyClaims).Username)
//------map--------
mapSingingKey := []byte("wiasdqwesa")
w := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
"exp": time.Now().Unix() + 5,
"iss": "jt",
"nbf": time.Now().Unix() - 5,
"username": "my",
})
ss, err := w.SignedString(mapSingingKey)
if err != nil {
fmt.Println("map-SignedString:", err)
}
fmt.Println("ss:", ss)
stoken, err := jwt.ParseWithClaims(ss, &jwt.MapClaims{}, func(stoken *jwt.Token) (interface{}, error) {
return mapSingingKey, nil
})
if err != nil {
fmt.Println("stoken-err:", err)
} else {
fmt.Println(stoken.Claims.(*jwt.MapClaims))
}
}
golang-jwt
最新推荐文章于 2024-01-23 09:24:33 发布