12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package jwt
- import (
- logger "eta/eta_mini_ht_api/common/component/log"
- "eta/eta_mini_ht_api/common/exception"
- "github.com/dgrijalva/jwt-go"
- "time"
- )
- type Claims struct {
- OpenId string `json:"open_id"`
- Mobile string `json:"mobile"`
- TokenType string `json:"tokenType"`
- jwt.StandardClaims
- }
- const (
- AccessToken = "access_token"
- GuestToken = "guest_token"
- )
- var (
- KEY = []byte("5Mb5Gdmb5y")
- )
- // CreateToken 生成token
- func CreateToken(openId string, mobile string, tokenType string) (tokenString string, err error) {
- claims := &Claims{
- openId,
- mobile,
- tokenType,
- jwt.StandardClaims{
- NotBefore: time.Now().Unix(),
- ExpiresAt: time.Now().Add(time.Hour * 24 * 90).Unix(),
- },
- }
- token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
- tokenString, err = token.SignedString(KEY)
- if err != nil {
- logger.Error("生成token失败", err)
- }
- return
- }
- type JwtInfo struct {
- OpenId string
- Mobile string
- TokenType string
- }
- // CheckToken 校验token
- func CheckToken(tokenStr string) (info JwtInfo, err error) {
- token, err := jwt.Parse(tokenStr, func(*jwt.Token) (interface{}, error) {
- return KEY, nil
- })
- if err != nil {
- logger.Error("解析Token失败:%v", err)
- err = exception.New(exception.JWTTokenDecodeFailed)
- return
- }
- if claims, ok := token.Claims.(jwt.MapClaims); ok {
- nbf, _ := claims["nbf"].(float64)
- exp, _ := claims["exp"].(float64)
- if float64(time.Now().Unix()) < nbf {
- logger.Error("Token无效")
- err = exception.New(exception.JWTTokenInvalid)
- return
- }
- if float64(time.Now().Unix()) >= exp {
- logger.Error("Token已过期")
- err = exception.New(exception.JWTTokenExpired)
- return
- }
- info = JwtInfo{
- OpenId: claims["open_id"].(string),
- Mobile: claims["mobile"].(string),
- TokenType: claims["tokenType"].(string),
- }
- return
- }
- logger.Error("claims解析失败")
- err = exception.New(exception.JWTTokenDecodeFailed)
- return
- }
|