Go生成JWT Token
package utils
import (
"fmt"
"github.com/dgryski/jwt-go"
"github.com/gin-gonic/gin"
"time"
)
type Claims struct {
UserId int
jwt.StandardClaims
}
// 自定义一个字符串
var jwtKey = "www.xxyyxx.com"
//var jwtKey = []byte("www.xxyyxx.com")
// 设置Token串
func SetToken(c *gin.Context, userID int) string {
// 颁发一个有效时间为一分钟的token
expireTime := time.Now().Add(60 * time.Second)
fmt.Println(expireTime)
claims := &Claims{
UserId: userID,
StandardClaims: jwt.StandardClaims{
ExpiresAt: expireTime.Unix(), // token过期时间
IssuedAt: time.Now().Unix(),
Issuer: "127.0.0.1", //颁发者
Subject: "user token", // 签名主题
},
}
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
tokenString, err := token.SignedString([]byte(jwtKey))
if err != nil {
fmt.Println("颁发token错误!!!!", err)
}
return tokenString
}
// 验证Token
func ParseToken(tokenStr string) (*jwt.Token, *Claims, error) {
Claims := &Claims{}
token, err := jwt.ParseWithClaims(tokenStr, Claims, func(token *jwt.Token) (interface{}, error) {
return []byte(jwtKey), nil
})
return token, Claims, err
}
// 获取Token
func GetToken(c *gin.Context) {
tokenString := c.GetHeader("Authorization")
fmt.Println("前端传的Token串:>>>>>>>",tokenString)
if tokenString == "" {
Json(c, 40000003, "权限不足", "")
c.Abort()
return
}
token, claims, err := ParseToken(tokenString)
if err != nil || !token.Valid {
fmt.Println("Token错误>>>>",err)
Json(c,400000004,"token串错误","")
c.Abort()
return
}
fmt.Println(claims.UserId)
}
python防脱发技巧

浙公网安备 33010602011771号