From f7d9e845fa65d5d95ca22fff220da7a182544fb6 Mon Sep 17 00:00:00 2001
From: duhe <226547893@qq.com>
Date: 星期三, 01 四月 2026 15:42:39 +0800
Subject: [PATCH] 1
---
WebAPI/Service/JwtAuthorizeAttribute.cs | 68 +++++++++++++++++++++++++++++++--
1 files changed, 63 insertions(+), 5 deletions(-)
diff --git a/WebAPI/Service/JwtAuthorizeAttribute.cs b/WebAPI/Service/JwtAuthorizeAttribute.cs
index ca96e21..382f7eb 100644
--- a/WebAPI/Service/JwtAuthorizeAttribute.cs
+++ b/WebAPI/Service/JwtAuthorizeAttribute.cs
@@ -1,6 +1,8 @@
锘縰sing System;
+using System.Linq;
using System.Net;
using System.Net.Http;
+using System.Reflection;
using System.Security.Claims;
using System.Threading;
using System.Threading.Tasks;
@@ -51,12 +53,68 @@
return;
}
- // 楠岃瘉鏄惁鎷ユ湁璁块棶妯″潡鐨勬潈闄�
- // 鏈変袱绉嶅垽鏂柟寮� 涓�绉嶆槸閫氳繃瑙掕壊鍘诲垽鏂紝涓�绉嶆槸閫氳繃鐢ㄦ埛鍘诲垽鏂� 鐩墠鏆傛椂涓嶅仛鍖哄垎锛屽悗缁彲澧炲姞绯荤粺鍙傛暟鏉ヨ繘琛屽尯鍒�
-
-
// 璁剧疆鐢ㄦ埛
actionContext.RequestContext.Principal = principal;
+
+ // 楠岃瘉鏄惁鎷ユ湁璁块棶妯″潡鐨勬潈闄�
+ // 鏈変袱绉嶅垽鏂柟寮� 涓�绉嶆槸閫氳繃瑙掕壊鍘诲垽鏂紝涓�绉嶆槸閫氳繃鐢ㄦ埛鍘诲垽鏂� 鐩墠鏆傛椂涓嶅仛鍖哄垎锛屽悗缁彲澧炲姞绯荤粺鍙傛暟鏉ヨ繘琛屽尯鍒�
+ // 鑾峰彇鎺у埗鍣ㄦ弿杩板櫒
+ HttpControllerDescriptor controllerDescriptor = actionContext.ControllerContext.ControllerDescriptor;
+ // //鑾峰彇鎺у埗鍣ㄧ被鍨�
+ Type controllerType = controllerDescriptor.ControllerType;
+ // // 鑾峰彇鎺у埗鍣ㄧ骇鍒爣绛�
+ var controllerAttr = controllerType.GetCustomAttribute<PermissionAttribute>();
+ // 鑾峰彇鍔ㄤ綔绾у埆鏍囩
+ var actionAttr = actionContext.ActionDescriptor
+ .GetCustomAttributes<PermissionAttribute>()
+ .FirstOrDefault();
+
+ string PermissionStr = string.Empty;
+ // 鍒ゆ柇鎺у埗鍣ㄧ骇鍒笂鏄惁鍚敤浜嗛壌鏉冩爣绛�
+ if(controllerAttr != null && !string.IsNullOrWhiteSpace(controllerAttr.HModName))
+ {
+ PermissionStr += controllerAttr.HModName;
+
+ // 鏌ョ湅鏄惁闇�瑕佹洿缁嗙矑搴︾殑鎺у埗
+ if(actionAttr != null && !string.IsNullOrWhiteSpace(actionAttr.Operate))
+ {
+ // 璇ュ姩浣滃搴旂殑妯″潡鍚嶅拰鎺у埗鍣ㄥ悕鏄惁涓嶄竴鑷�
+ if (string.IsNullOrWhiteSpace(actionAttr.HModName))
+ {
+ PermissionStr = actionAttr.HModName + actionAttr.Operate;
+ }
+ else
+ {
+ PermissionStr += actionAttr.Operate;
+ }
+
+ }
+
+ if(!string.IsNullOrWhiteSpace(PermissionStr))
+ {
+ if (!DBUtility.ClsPub.Security_Log(PermissionStr, 1, false, JWTHelper.getUserName(token)))
+ {
+ HandleForbidden(actionContext);
+ return;
+ }
+ }
+
+ }else if (string.IsNullOrWhiteSpace(actionAttr.HModName) && string.IsNullOrWhiteSpace(actionAttr.Operate))
+ {
+ // 鍗曠嫭鍦ㄥ姩浣滀笂鍚敤閴存潈鍔熻兘
+ PermissionStr = actionAttr.HModName + actionAttr.Operate;
+
+ if (!string.IsNullOrWhiteSpace(PermissionStr))
+ {
+ if (!DBUtility.ClsPub.Security_Log(PermissionStr, 1, false, JWTHelper.getUserName(token)))
+ {
+ HandleForbidden(actionContext);
+ return;
+ }
+ }
+ }
+
+
}
catch (Exception e)
{
@@ -111,7 +169,7 @@
var response = new HttpResponseMessage(HttpStatusCode.Forbidden);
objjson.code = "0";
objjson.count = 0;
- objjson.Message = "褰撳墠瑙掕壊鏃犳潈闄�";
+ objjson.Message = "鎮ㄦ病鏈夎妯″潡鏉冮檺,璇蜂笌绠$悊鍛樿仈绯伙紒";
response.Content = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(objjson),
System.Text.Encoding.UTF8, "application/json");
context.Response = response;
--
Gitblit v1.9.1