| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- 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)
- }
|