123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package common
- import (
- "crypto/md5"
- "encoding/hex"
- "fmt"
- "time"
- )
- import (
- "github.com/golang-jwt/jwt/v5"
- "github.com/spf13/cast"
- )
- var CstSh, _ = time.LoadLocation("Asia/Shanghai")
- const (
- LocateDateFormat = "2006-01-02"
- LocateTimeFormat = "2006-01-02 15:04:05"
- LocateMilliFormat = "2006-01-02 15:04:05.9999"
- )
- func Date() string {
- return time.Now().In(CstSh).Format(LocateDateFormat)
- }
- func Now() string {
- return time.Now().In(CstSh).Format(LocateTimeFormat)
- }
- func NowMilli() string {
- return time.Now().In(CstSh).Format(LocateMilliFormat)
- }
- func NewToken(userId uint, name string) (string, int64, error) {
- expire := time.Now().AddDate(0, 1, 0)
- hmacSampleSecret := []byte(BasicConfig.Jwt)
- token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
- "id": userId,
- "name": name,
- "exp": expire.Unix(),
- })
- str, err := token.SignedString(hmacSampleSecret)
- return str, expire.Unix(), err
- }
- func ParseToken(tokenString string) (uint, string, error) {
- token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
- if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
- return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"])
- }
- return []byte(BasicConfig.Jwt), nil
- })
- if err != nil {
- return 0, "", err
- }
- claims := token.Claims.(jwt.MapClaims)
- return cast.ToUint(claims["id"]), claims["name"].(string), nil
- }
- func MD5(v []byte) string {
- h := md5.New()
- h.Write(v)
- re := h.Sum(nil)
- return hex.EncodeToString(re)
- }
|