37 lines
926 B
Go
37 lines
926 B
Go
package xjwt
|
|
|
|
import (
|
|
"github.com/golang-jwt/jwt/v5"
|
|
"mylomen_server/common/config"
|
|
"mylomen_server/common/dto"
|
|
"time"
|
|
)
|
|
|
|
func GenJwtToken(claims dto.LoginTokenVo) string {
|
|
mySigningKey := []byte(config.Instance.MyServer.JwtSigningKey)
|
|
|
|
claims.Issuer = "mylomen.com"
|
|
claims.IssuedAt = jwt.NewNumericDate(time.Now())
|
|
|
|
//加密
|
|
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
|
|
ss, _ := token.SignedString(mySigningKey)
|
|
return ss
|
|
}
|
|
|
|
func ParseJwtToken(jwtToken string) (*dto.LoginTokenVo, error) {
|
|
if jwtToken == "" || len(jwtToken) > 256 {
|
|
return nil, nil
|
|
}
|
|
//parse
|
|
parseToken, err := jwt.ParseWithClaims(jwtToken, &dto.LoginTokenVo{}, func(token *jwt.Token) (interface{}, error) {
|
|
return []byte(config.Instance.MyServer.JwtSigningKey), nil
|
|
})
|
|
//check
|
|
if userClaims, ok := parseToken.Claims.(*dto.LoginTokenVo); ok && parseToken.Valid {
|
|
return userClaims, nil
|
|
} else {
|
|
return nil, err
|
|
}
|
|
}
|