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")
}
两者的key和secret就相当于一个钥匙,解析token时,secret即钥匙不对,token就解析不出来
这里的key值我选用的当前日期和一个字符串的合体