go jwt創建,校驗

我這邊使用的是這個包:

go get github.com/dgrijalva/jwt-go

 

例子:

package main

import (
	"fmt"
	"github.com/dgrijalva/jwt-go"
	"time"
)

const (
	JwtSecretKey = "welcome@#dennyYANG'yi9012"//jwt校驗字符串
	JwtExpireSecond = 30//30秒過期
)

//存儲在jwt的數據
type Storejwt struct {
	UserId int
	Username string
	Email string
	exp int
	expire int
}

//創建jwt字符串
func CreateJwtToken(st Storejwt) (string,error) {

	token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
		"Userid": st.UserId,
		"Username": st.Username,
		"Email": st.Email,
		//可以添加過期時間,這個參數必須小寫哦,源碼是小寫的
		"exp": time.Now().Add(time.Second * JwtExpireSecond).Unix(),
	})

	return token.SignedString([]byte(JwtSecretKey))//校驗的字符串
}

//校驗jwt字符串
func ParseJwtToken(s string) (jwt.MapClaims, error) {
	fn := func(token *jwt.Token) (interface{}, error) {
		return []byte(JwtSecretKey), nil//校驗字符串
	}

	result,error := jwt.Parse(s, fn)
	if error!=nil{
		return nil,error//signature is invalid or Token is expired
	}

	//解析存入去的jwt信息
	finToken := result.Claims.(jwt.MapClaims)

	return finToken,nil
}
func main() {

	var storeJwt = Storejwt{UserId:100,Username:"張三",Email:"[email protected]",}
	//生成jwt token
	tokenString,err := CreateJwtToken(storeJwt)
	fmt.Println(err,tokenString)


	//解析jwt token
	result,err2 := ParseJwtToken(tokenString)
	fmt.Println(err2,result,result["Userid"],result["Username"],result["Email"])
}

解析jwt的內容:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章