package util import ( "dsbqj-admin/pkg/logger" "encoding/base64" "github.com/goccy/go-json" ) //var jwtSecret []byte // //type Claims struct { // ID string // UserName string // jwt.StandardClaims //} // //// GenerateToken generate tokens used for auth //func GenerateToken(user model.User, secret string) (string, error) { // nowTime := time.Now() // expireTime := nowTime.Add(3 * time.Hour) // // claims := Claims{ // EncodeMD5(hashid.HashID(user.ID, hashid.UserID)), // EncodeMD5(user.UserName), // // jwt.StandardClaims{ // ExpiresAt: expireTime.Unix(), // Issuer: "gin-blog", // }, // } // // tokenClaims := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) // token, err := tokenClaims.SignedString(jwtSecret) // // return token, err //} // //// ParseToken parsing token //func ParseToken(token string, secret string) (*Claims, error) { // tokenClaims, err := jwt.ParseWithClaims(token, &Claims{}, func(token *jwt.Token) (interface{}, error) { // return jwtSecret, nil // }) // // if tokenClaims != nil { // if claims, ok := tokenClaims.Claims.(*Claims); ok && tokenClaims.Valid { // return claims, nil // } // } // // return nil, err //} type Token struct { ID uint `json:"id"` Status string `json:"status"` Role string `json:"role"` Gender string `json:"gender"` ExpiresIn int64 `json:"expires_in"` CreateAt int64 `json:"create_at"` } func GenerateToken(src interface{}, key string) string { ci := NewAesCipher128([]byte(key), []byte("Power-Doom")) //转json j, err := json.Marshal(src) if err != nil { logger.Error("数据转换错误", err) return "" } res := ci.Encrypt(j) return base64.StdEncoding.EncodeToString(res) } func ParseToken(src string, key string) []byte { defer func() { err := recover() //内置函数,可以捕捉到函数异常 if err != nil { //这里是打印错误,还可以进行报警处理,例如微信,邮箱通知 logger.Error("token解析错误:", err) } }() plain, err := base64.StdEncoding.DecodeString(src) if err != nil { logger.Error("token解析错误", err) return []byte{} } ci := NewAesCipher128([]byte(key), []byte("Power-Doom")) return ci.Decrypt(plain) }