package main
import (
"fmt"
"github.com/dgrijalva/jwt-go"
"time"
)
var nowDate = time.Now().Format("2006-01-02 15")
var secret = fmt.Sprintf("%v%v",nowDate,"xxxx")
// GenerateToken 生成Token值
func GenerateToken(mapClaims jwt.MapClaims, key string) (string, error) {
token := jwt.NewWithClaims(jwt.SigningMethodHS256, mapClaims)
return token.SignedString([]byte(key))
}
// token: "eyJhbGciO...解析token"
func ParseToken(token string, secret string) (string, error) {
claim, err := jwt.Parse(token, func(token *jwt.Token) (interface{
}, error) {
return []byte(secret), nil
})
if err != nil {
return "", err
}
return claim.Claims.(jwt.MapClaims)["cmd"].(string), nil
}
func main () {
dict := make(map[string]interface{
})
dict["name"] = "xxxx"
dict["age"] = 18
tokenNew, e := GenerateToken(dict,secret) // 生成token
fmt.Println(tokenNew,e,"777777777777777")
q, _ := ParseToken(tokenNew, secret) // 解析token
fmt.Println(q,"4444444444444444")
}
La clave y el secreto de los dos son equivalentes a una clave. Al analizar el token, el secreto significa que la clave es incorrecta y que el token no se puede analizar.
El valor de la clave aquí es una combinación de la fecha actual y una cadena que yo eligió.