7 Star 2 Fork 2

赵康铭/tinyTicktok

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
jwt.go 1.51 KB
一键复制 编辑 原始数据 按行查看 历史
weirdo0314 提交于 2022-05-17 13:40 . feat:完善视频上传接口
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
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/zhaokangming/tiny-ticktok.git
git@gitee.com:zhaokangming/tiny-ticktok.git
zhaokangming
tiny-ticktok
tinyTicktok
dcbaf51081e9

搜索帮助

0d507c66 1850385 C8b1a773 1850385