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 | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 49 insertions(+), 0 deletions(-)
diff --git a/middleware/jwt.go b/middleware/jwt.go
index 9ca981c..907a1d0 100644
--- a/middleware/jwt.go
+++ b/middleware/jwt.go
@@ -79,3 +79,52 @@
c.Next()
}
}
+
+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 == "" {
+ ctx.Fail(ecode.JWTEmpty)
+ c.Abort()
+ return
+ }
+ slices := strings.Split(token, " ")
+ if len(slices) == 2 {
+ token = slices[1]
+ }
+ j := utils.NewJWT()
+ // parseToken 瑙f瀽token鍖呭惈鐨勪俊鎭�
+ claims, err := j.ParseToken(token)
+ if err != nil {
+ 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)
+ if CheckAuth(c.Request.URL.Path, token) {
+ c.Next()
+ } else {
+ ctx.Fail(ecode.JWTDisabled)
+ c.Abort()
+ return
+ }
+ }
+}
--
Gitblit v1.8.0