修复 jwt payload解析的错误
This commit is contained in:
@@ -5,14 +5,17 @@ import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var DefaultJwtSecret uint64 = 21321321321
|
||||
|
||||
func ParseJwtTokenHeader[T any](r *http.Request) (string, *T, error) {
|
||||
//TODO:
|
||||
var u T
|
||||
return "", &u, nil
|
||||
// var u T
|
||||
// return "", &u, nil
|
||||
|
||||
AuthKey := r.Header.Get("Authorization")
|
||||
if AuthKey == "" {
|
||||
@@ -28,7 +31,51 @@ func ParseJwtTokenHeader[T any](r *http.Request) (string, *T, error) {
|
||||
return "", nil, fmt.Errorf("Invalid JWT token")
|
||||
}
|
||||
|
||||
payload, err := base64.URLEncoding.DecodeString(parts[1])
|
||||
payload, err := base64.RawURLEncoding.DecodeString(parts[1])
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("Error unmarshalling JWT DecodeString: %s", err.Error())
|
||||
}
|
||||
|
||||
var p T
|
||||
err = json.Unmarshal(payload, &p)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("Error unmarshalling JWT payload: %s", err)
|
||||
}
|
||||
|
||||
return AuthKey, &p, nil
|
||||
|
||||
// token, err := jwt.Parse(AuthKey, func(token *jwt.Token) (interface{}, error) {
|
||||
// // 检查签名方法是否为 HS256
|
||||
// if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
|
||||
// return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"])
|
||||
// }
|
||||
// // 返回用于验证签名的密钥
|
||||
// return []byte(svcCtx.Config.Auth.AccessSecret), nil
|
||||
// })
|
||||
// if err != nil {
|
||||
// return nil, errors.New(fmt.Sprint("Error parsing token:", err))
|
||||
// }
|
||||
|
||||
// // 验证成功返回
|
||||
// if claims, ok := token.Claims.(jwt.MapClaims); ok && token.Valid {
|
||||
// return claims, nil
|
||||
// }
|
||||
|
||||
// return nil, errors.New(fmt.Sprint("Invalid token", err))
|
||||
}
|
||||
|
||||
func TParseJwtTokenHeader[T any](AuthKey string) (string, *T, error) {
|
||||
//TODO:
|
||||
// var u T
|
||||
// return "", &u, nil
|
||||
|
||||
parts := strings.Split(AuthKey, ".")
|
||||
if len(parts) != 3 {
|
||||
return "", nil, fmt.Errorf("Invalid JWT token")
|
||||
}
|
||||
|
||||
payload, err := base64.RawURLEncoding.DecodeString(parts[1])
|
||||
log.Println(string(payload))
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("Error unmarshalling JWT DecodeString: %s", err.Error())
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ type RegisterToken struct {
|
||||
Email string // email
|
||||
Password string // 密码
|
||||
Platform string // 平台
|
||||
TraceId string //链路Id
|
||||
CreateAt time.Time // 创建时间
|
||||
}
|
||||
|
||||
@@ -29,6 +30,7 @@ type ResetToken struct {
|
||||
Wid string // websocket 通道id
|
||||
Email string // email
|
||||
OldPassword string // 旧密码
|
||||
TraceId string //链路Id
|
||||
CreateAt time.Time // 创建时间
|
||||
}
|
||||
|
||||
|
||||
@@ -216,7 +216,7 @@ func getJwtClaims(AuthKey string, AccessSecret *string) (jwt.MapClaims, error) {
|
||||
func PasswordHash(pwd string) string {
|
||||
h := sha256.New()
|
||||
h.Write([]byte(pwd))
|
||||
return base64.URLEncoding.EncodeToString(h.Sum(nil))
|
||||
return base64.RawURLEncoding.EncodeToString(h.Sum(nil))
|
||||
}
|
||||
|
||||
func CheckValueRange[T comparable](v T, rangevalues ...T) bool {
|
||||
|
||||
@@ -60,10 +60,10 @@ func TestCase1(t *testing.T) {
|
||||
|
||||
a := sha256.New()
|
||||
a.Write([]byte("fusen_backend_3021"))
|
||||
base64.URLEncoding.EncodeToString(a.Sum(nil))
|
||||
base64.RawURLEncoding.EncodeToString(a.Sum(nil))
|
||||
as := fmt.Sprintf("%x", a.Sum(nil))
|
||||
|
||||
log.Println(as, len(as), base64.URLEncoding.EncodeToString(a.Sum(nil)))
|
||||
log.Println(as, len(as), base64.RawURLEncoding.EncodeToString(a.Sum(nil)))
|
||||
|
||||
// b := sha256.New().Sum([]byte("fusen_backend_2022"))
|
||||
// bs := fmt.Sprintf("%x", b)
|
||||
|
||||
Reference in New Issue
Block a user