1 Star 0 Fork 0

saxon134/go-utils

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
saHttp_jwt.go 1.37 KB
一键复制 编辑 原始数据 按行查看 历史
saxon134 提交于 2023-10-03 16:56 +08:00 . init
package saHttp
import (
"encoding/json"
"gitee.com/saxon134/go-utils/saData/saError"
"github.com/dgrijalva/jwt-go"
"time"
)
func JwtGenerate(ptr interface{}, key string) (j string, err error) {
var bAry []byte
bAry, err = json.Marshal(ptr)
if err != nil {
return
}
token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
"jti": string(bAry),
"iat": time.Now().Unix(), //nbf生效时间
"edt": time.Now().Unix() + int64(time.Hour*240), //edt失效时间,尚未做失效控制
})
j, err = token.SignedString([]byte(key))
return
}
func JwtParse(token string, key string, ptr interface{}) (err error) {
var (
t *jwt.Token
claims jwt.MapClaims
ok bool
)
t, err = jwt.Parse(token, func(token *jwt.Token) (i interface{}, e error) {
if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
return
}
return []byte(key), nil
})
if err != nil {
return saError.Error{Code: saError.UnAuthedErrorCode}
}
claims, ok = t.Claims.(jwt.MapClaims)
if !ok || !t.Valid {
return saError.Error{Code: saError.UnAuthedErrorCode}
}
value := claims["jti"]
var bAry []byte
if bAry, ok = value.([]byte); ok == false {
var str string
if str, ok = value.(string); ok == true {
bAry = []byte(str)
}
}
err = json.Unmarshal(bAry, ptr)
if err != nil {
return saError.Error{Code: saError.UnAuthedErrorCode}
}
return
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/saxon134/go-utils.git
git@gitee.com:saxon134/go-utils.git
saxon134
go-utils
go-utils
b2602dc8c3fc

搜索帮助