43 行
918 B
Go
43 行
918 B
Go
package util
|
|
|
|
import (
|
|
"github.com/golang-jwt/jwt"
|
|
)
|
|
|
|
type UserClaims struct {
|
|
UserID int `json:"user_id"`
|
|
RoleID int `json:"role_id"`
|
|
jwt.StandardClaims
|
|
}
|
|
|
|
const (
|
|
JWTSecret = "fee516aa-8f5b-4248-a80c-bf467d40fd62"
|
|
)
|
|
|
|
func ParseJWT(token string) (*UserClaims, error) {
|
|
tokenClaims, err := jwt.ParseWithClaims(token, &UserClaims{}, func(token *jwt.Token) (interface{}, error) {
|
|
return []byte(JWTSecret), nil
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if tokenClaims != nil {
|
|
if claims, ok := tokenClaims.Claims.(*UserClaims); ok && tokenClaims.Valid {
|
|
return claims, nil
|
|
}
|
|
}
|
|
return nil, err
|
|
}
|
|
func GenerateJWT(userID int, roleID int) string {
|
|
token := jwt.NewWithClaims(jwt.SigningMethodHS256, UserClaims{
|
|
UserID: userID,
|
|
RoleID: roleID,
|
|
StandardClaims: jwt.StandardClaims{},
|
|
})
|
|
str, err := token.SignedString([]byte(JWTSecret))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return str
|
|
}
|