直接完成
此提交包含在:
42
pkg/util/permission.go
一般檔案
42
pkg/util/permission.go
一般檔案
@@ -0,0 +1,42 @@
|
||||
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
|
||||
}
|
新增問題並參考
封鎖使用者