支持jwt
This commit is contained in:
@ -16,6 +16,8 @@ var (
|
||||
IP *ip
|
||||
// URL ...
|
||||
URL *ownURL
|
||||
// JWT ...
|
||||
JWT *ownJwt
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
66
util/jwt.go
Normal file
66
util/jwt.go
Normal file
@ -0,0 +1,66 @@
|
||||
// Package util ...
|
||||
//
|
||||
// Description : go-jwt具体实现
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 2023-02-11 20:09
|
||||
package util
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"github.com/dgrijalva/jwt-go/v4"
|
||||
)
|
||||
|
||||
type ownJwt struct {
|
||||
}
|
||||
|
||||
type MyClaims struct {
|
||||
jwt.StandardClaims
|
||||
}
|
||||
|
||||
// Generate 生成 token
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 20:13 2023/2/11
|
||||
func (j *ownJwt) Generate(signMethod jwt.SigningMethod, secret string, claims jwt.Claims) (string, error) {
|
||||
if nil == signMethod {
|
||||
signMethod = jwt.SigningMethodHS256
|
||||
}
|
||||
var (
|
||||
token *jwt.Token
|
||||
)
|
||||
|
||||
if nil == claims {
|
||||
token = jwt.New(signMethod)
|
||||
} else {
|
||||
token = jwt.NewWithClaims(signMethod, claims)
|
||||
}
|
||||
return token.SignedString([]byte(secret))
|
||||
}
|
||||
|
||||
// Validate 验证token
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 20:13 2023/2/11
|
||||
func (j *ownJwt) Validate(inputToken string, secret string, claims jwt.Claims) (jwt.Claims, error) {
|
||||
|
||||
var (
|
||||
token *jwt.Token
|
||||
err error
|
||||
)
|
||||
|
||||
if token, err = jwt.ParseWithClaims(inputToken, claims, func(tokenInfo *jwt.Token) (interface{}, error) {
|
||||
return []byte(secret), nil
|
||||
}); nil != err {
|
||||
return nil, errors.New("token parse fail : " + err.Error())
|
||||
}
|
||||
if !token.Valid {
|
||||
return nil, errors.New("token is valid : " + err.Error())
|
||||
}
|
||||
|
||||
return token.Claims, nil
|
||||
}
|
Reference in New Issue
Block a user