package utils
|
|
import (
|
"apsClient/model/request"
|
"apsClient/pkg/logx"
|
"github.com/gin-gonic/gin"
|
"strings"
|
)
|
|
func GetClaims(c *gin.Context) (*request.CustomClaims, error) {
|
token := c.Request.Header.Get("Authorization")
|
logx.Infof("GetClaims token:%v", token)
|
slices := strings.Split(token, " ")
|
if len(slices) == 2 {
|
token = slices[1]
|
}
|
j := NewJWT()
|
claims, err := j.ParseToken(token)
|
if err != nil {
|
logx.Error("从Gin的Context中获取从jwt解析信息失败, 请检查请求头是否存在x-token且claims是否为规定结构")
|
}
|
return claims, err
|
}
|
|
// GetUserID 从Gin的Context中获取从jwt解析出来的用户ID
|
func GetUserID(c *gin.Context) string {
|
if claims, exists := c.Get("claims"); !exists {
|
if cl, err := GetClaims(c); err != nil {
|
return ""
|
} else {
|
return cl.UserId
|
}
|
} else {
|
waitUse := claims.(*request.CustomClaims)
|
return waitUse.UserId
|
}
|
}
|
|
// GetUserInfo 从Gin的Context中获取从jwt解析出来的用户信息
|
func GetUserInfo(c *gin.Context) *request.CustomClaims {
|
if claims, exists := c.Get("claims"); !exists {
|
if cl, err := GetClaims(c); err != nil {
|
return nil
|
} else {
|
return cl
|
}
|
} else {
|
waitUse := claims.(*request.CustomClaims)
|
return waitUse
|
}
|
}
|