代码拉取完成,页面将自动刷新
package auth
import (
"time"
"gitee.com/zhaokangming/tiny-ticktok/config"
"github.com/golang-jwt/jwt/v4"
)
// Claims 自定义载荷结构,包含了一个标准的JWT载荷
type Claims struct {
// ID 用户ID
ID int64 `json:"id"`
// jwt标准载荷
jwt.RegisteredClaims
}
// ParseToken 解析token字符串
func ParseToken(token string) (*Claims, error) {
p := jwt.NewParser(jwt.WithoutClaimsValidation())
//用密匙解析出token声明
tokenClaims, err := p.ParseWithClaims(token, &Claims{}, func(token *jwt.Token) (interface{}, error) {
return []byte(config.TikTok.Secret), nil
})
if err != nil {
return nil, err
}
// token声明解析完成后再次解析出自定义的声明并检查token声明是否有效,有效则返回自定义声明
if claims, ok := tokenClaims.Claims.(*Claims); ok && tokenClaims.Valid {
return claims, nil
}
return nil, err
}
// CreateToken 创建Token
func CreateToken(id int64) (string, error) {
//通过现在时间得到token过期时间
curTime := time.Now()
expTime := curTime.Add(config.TikTok.Timeout * time.Minute)
//初始化自定义的载荷
claims := Claims{id, jwt.RegisteredClaims{ExpiresAt: &jwt.NumericDate{Time: expTime},
Issuer: config.TikTok.Issuer, IssuedAt: &jwt.NumericDate{Time: curTime}}}
//初始化tokenClaim数据结构
tokenClaim := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
//生成签名字符串,再用于获取完整、已签名的token
token, err := tokenClaim.SignedString([]byte(config.TikTok.Secret))
return token, err
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。