golang 生成token与解析tonken

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值我选用的当前日期和一个字符串的合体

猜你喜欢

转载自blog.csdn.net/weixin_43202081/article/details/110431133