From 5f0170df9787c6f3ff17cc168b3f2e3f511453f6 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 31 十月 2023 20:04:16 +0800
Subject: [PATCH] 支持职级降级的情况
---
middleware/jwt.go | 34 +++++++++++++++++++++++++++-------
1 files changed, 27 insertions(+), 7 deletions(-)
diff --git a/middleware/jwt.go b/middleware/jwt.go
index 673087c..907a1d0 100644
--- a/middleware/jwt.go
+++ b/middleware/jwt.go
@@ -82,10 +82,12 @@
func JWTAuth2() gin.HandlerFunc {
return func(c *gin.Context) {
+ ctx := new(contextx.Context).SetCtx(c)
// 鎴戜滑杩欓噷jwt閴存潈鍙栧ご閮ㄤ俊鎭� Authorization 鐧诲綍鏃跺洖杩斿洖token淇℃伅 杩欓噷鍓嶇闇�瑕佹妸token瀛樺偍鍒癱ookie鎴栬�呮湰鍦發ocalStorage涓� 涓嶈繃闇�瑕佽窡鍚庣鍗忓晢杩囨湡鏃堕棿 鍙互绾﹀畾鍒锋柊浠ょ墝鎴栬�呴噸鏂扮櫥褰�
token := c.Request.Header.Get("Authorization")
if token == "" {
- c.Next()
+ ctx.Fail(ecode.JWTEmpty)
+ c.Abort()
return
}
slices := strings.Split(token, " ")
@@ -96,15 +98,33 @@
// parseToken 瑙f瀽token鍖呭惈鐨勪俊鎭�
claims, err := j.ParseToken(token)
if err != nil {
- if err == utils.TokenExpired {
- c.Next()
- return
- }
- c.Next()
+ ctx.Fail(ecode.JWTDisabled)
+ c.Abort()
+ return
+ }
+ userInfo := service.GetUserBaseCache(claims.UserId)
+ if userInfo == nil {
+ SyncUserInfo([]string{claims.UserId})
+ userInfo = service.GetUserBaseCache(claims.UserId)
+ }
+ if userInfo == nil {
+ ctx.Fail(ecode.JWTDisabled)
+ c.Abort()
return
}
+ SetActiveTime(claims.UserId)
+
+ claims.CrmUserId = userInfo.UserId
+ claims.NickName = userInfo.NickName
+ claims.SubUserIds = userInfo.SubUserIds
c.Set("claims", claims)
- c.Next()
+ if CheckAuth(c.Request.URL.Path, token) {
+ c.Next()
+ } else {
+ ctx.Fail(ecode.JWTDisabled)
+ c.Abort()
+ return
+ }
}
}
--
Gitblit v1.8.0