代码拉取完成,页面将自动刷新
package jwt
import (
"errors"
"fmt"
"log"
"time"
"github.com/golang-jwt/jwt/v5"
)
func GetClaimsString(claims jwt.MapClaims, key string) string {
if subject, ok := claims[key]; ok {
if value, ok := subject.(string); ok {
return value
}
}
return ""
}
func GetClaimsStringPtr(claims jwt.MapClaims, key string) *string {
if subject, ok := claims[key]; ok {
if value, ok := subject.(string); ok {
return &value
}
}
return nil
}
func GetClaimsInt64Ptr(claims jwt.MapClaims, key string) *int64 {
if subject, ok := claims[key]; ok {
if value, ok := subject.(int64); ok {
return &value
}
}
return nil
}
func GetClaimsIssuerAndExpiresAt2(claims jwt.MapClaims) (issuer *string, expiresAt *jwt.NumericDate) {
issuer = GetClaimsStringPtr(claims, "iss")
exp := GetClaimsInt64Ptr(claims, "exp")
if exp != nil {
expiresAt = jwt.NewNumericDate(time.Unix(*exp, 0))
}
return
}
func GetClaimsIssuerAndExpiresAt(claims jwt.Claims) (issuer *string, expiresAt *jwt.NumericDate) {
mapClaims, _ := claims.(jwt.MapClaims)
return GetClaimsIssuerAndExpiresAt2(mapClaims)
}
func ParseJwtToken(jwtToken *string, secret string) (jwt.Claims, error) {
token, err := jwt.Parse(*jwtToken, func(token *jwt.Token) (any, error) {
if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
return nil, fmt.Errorf("unexpected signing method %v", token.Header["alg"])
}
return []byte(secret), nil
})
if err != nil {
log.Println("jwt parse err:", err)
return nil, err
}
if token.Valid {
return token.Claims, nil
}
return nil, errors.New("invalid jwt token")
}
// self jwt token, no need to check activated
func ParseJwtTokenWithClaims(jwtToken *string, secret string) (*CustomClaims, error) {
claims := &CustomClaims{}
token, err := jwt.ParseWithClaims(*jwtToken, claims, func(token *jwt.Token) (any, error) {
if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
return nil, fmt.Errorf("unexpected signing method %v", token.Header["alg"])
}
return []byte(secret), nil
})
if err != nil {
return nil, err // token is expired by
}
if !token.Valid {
return nil, errors.New("invalid jwt")
}
// if token.Claims.Valid().Error()
return claims, nil
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。