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:"denny@mmoga.hk",}
	//生成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的内容:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值