From fc639ed0ef35446bbe358745524c2deb2db8b251 Mon Sep 17 00:00:00 2001
From: Demo <Demo@DESKTOP-CPA90BF>
Date: 星期五, 21 六月 2024 16:58:04 +0800
Subject: [PATCH] Merge branch 'csc'

---
 Wms/Wms/Controllers/UpApiController.cs                  |   11 +++--
 Wms/Wms/appsettings.json                                |    5 ++
 Wms/Utility/Filter/ApiSignatureVerificationAttribute.cs |   44 +++++++++++++++++++--
 Wms/Wms/Startup.cs                                      |    5 ++
 4 files changed, 54 insertions(+), 11 deletions(-)

diff --git a/Wms/Utility/Filter/ApiSignatureVerificationAttribute.cs b/Wms/Utility/Filter/ApiSignatureVerificationAttribute.cs
index 6b98c8c..511d68d 100644
--- a/Wms/Utility/Filter/ApiSignatureVerificationAttribute.cs
+++ b/Wms/Utility/Filter/ApiSignatureVerificationAttribute.cs
@@ -9,6 +9,8 @@
 using System.Threading.Tasks;
 using Utility.Tools;
 using static System.Net.Mime.MediaTypeNames;
+using Utility.Entity;
+using Microsoft.AspNetCore.Http;
 
 namespace Utility
 {
@@ -18,11 +20,11 @@
     [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false)]
     public class VerificationAttribute : ActionFilterAttribute
     {
-        private static readonly string appKey = SignConfig.AppKey;
+        private string appKey;
         private static readonly double Minutes = SignConfig.Minutes;//鏃堕棿鎴冲繀椤�5鍒嗛挓鍐呯殑锛屽惁鍒欎笉閫氳繃
         public VerificationAttribute()
         {
-
+            
         }
 
         public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
@@ -30,11 +32,30 @@
             var request = context.HttpContext.Request;
 
             // 鑾峰彇璇锋眰涓殑鏃堕棿鎴冲拰绛惧悕
+            var system = request.Headers["System"].FirstOrDefault();
             var timestamp = request.Headers["Timestamp"].FirstOrDefault();
             var signature = request.Headers["Signature"].FirstOrDefault();
             //var timestamp = "1718873584";
             //var signature = "1718873584";
-
+            switch (system)
+            {
+                case "ERP":
+                    appKey = SignConfig.ERPAppKey;
+                    break;
+                case "MES":
+                    appKey = SignConfig.MESAppKey;
+                    break;
+                case "LIMS":
+                    appKey = SignConfig.LIMSAppKey;
+                    break;
+                case "FuMa":
+                    appKey = SignConfig.FuMaAppKey;
+                    break;
+                default:
+                    context.Result = new UnauthorizedResult();
+                    return;
+            }
+            
             if (string.IsNullOrEmpty(timestamp) || string.IsNullOrEmpty(signature))
             {
                 context.Result = new UnauthorizedResult();
@@ -45,6 +66,17 @@
             if (!IsTimestampValid(timestamp))
             {
                 context.Result = new UnauthorizedResult();
+                var apiResponse = new ApiResponse<object>(
+                    401,
+                    "error",
+                    "鏃堕棿澶辨晥"
+                );
+
+                var json = JsonConvert.SerializeObject(apiResponse);
+                context.HttpContext.Response.ContentType = "application/json";
+                context.HttpContext.Response.ContentLength = Encoding.UTF8.GetByteCount(json);
+                await context.HttpContext.Response.WriteAsync(json);
+                await base.OnActionExecutionAsync(context, next);
                 return;
             }
 
@@ -92,7 +124,6 @@
                 context.Result = new UnauthorizedResult();
                 return;
             }
-
             await base.OnActionExecutionAsync(context, next);
         }
 
@@ -118,7 +149,10 @@
     }
     public class SignConfig
     {
-        public static string AppKey { get; set; }
+        public static string ERPAppKey { get; set; }
+        public static string MESAppKey { get; set; }
+        public static string LIMSAppKey { get; set; }
+        public static string FuMaAppKey { get; set; }
         public static double Minutes { get; set; }
     }
 
diff --git a/Wms/Wms/Controllers/UpApiController.cs b/Wms/Wms/Controllers/UpApiController.cs
index 4929f8e..2d549d0 100644
--- a/Wms/Wms/Controllers/UpApiController.cs
+++ b/Wms/Wms/Controllers/UpApiController.cs
@@ -20,6 +20,7 @@
 using System.Linq;
 using System.Text;
 using Newtonsoft.Json.Linq;
+using System.Runtime.CompilerServices;
 
 namespace Wms.Controllers
 {
@@ -447,6 +448,7 @@
         /// 娴嬭瘯楠岀鍔犲瘑
         /// </summary>
         /// <returns></returns>
+        [ServiceFilter(typeof(ApiResponseActionFilter))]
         [Verification]
         [HttpPost]
         public IActionResult Demo2(IdVm model)
@@ -468,11 +470,12 @@
             }
         }
 
-        [HttpGet]
+        [HttpPost]
         [ServiceFilter(typeof(ApiResponseActionFilter))]
-        public string Demo3()
+        [UnitOfWork]
+        public string Demo3(IdVm model)
         {
-            string jsonParams = "{\"param1\": \"value1\", \"param2\": \"value2\"}";
+            string jsonParams = JsonConvert.SerializeObject(model);
 
             // 鐢熸垚鏃堕棿鎴筹紙Unix 鏃堕棿鎴筹級
             var timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString();
@@ -487,7 +490,7 @@
 
         private static string GenerateSignature(string jsonParams)
         {
-            var appKey = "90170307d4184844ac2a26b431f79980";
+            var appKey = "90170307d4184844ac2a26b431f79981";
             // 灏� JSON 瀛楃涓茶浆鎹负 JObject
             JObject jObject = JObject.Parse(jsonParams);
 
diff --git a/Wms/Wms/Startup.cs b/Wms/Wms/Startup.cs
index e2e8614..fb30816 100644
--- a/Wms/Wms/Startup.cs
+++ b/Wms/Wms/Startup.cs
@@ -114,7 +114,10 @@
             //数据库配置
             BaseDbConfig.ConnectionString = Configuration.GetSection("AppSettings:ConnectionString").Value;
             //验签配置文件
-            SignConfig.AppKey = Configuration.GetSection("SignConfig:AppKey").Value;  
+            SignConfig.ERPAppKey = Configuration.GetSection("SignConfig:ERPAppKey").Value;  
+            SignConfig.MESAppKey = Configuration.GetSection("SignConfig:MESAppKey").Value;  
+            SignConfig.LIMSAppKey = Configuration.GetSection("SignConfig:LIMSAppKey").Value;  
+            SignConfig.FuMaAppKey = Configuration.GetSection("SignConfig:FuMaAppKey").Value;
             SignConfig.Minutes = double.Parse(Configuration.GetSection("SignConfig:Minutes").Value);
 
 
diff --git a/Wms/Wms/appsettings.json b/Wms/Wms/appsettings.json
index 1958cff..bf36940 100644
--- a/Wms/Wms/appsettings.json
+++ b/Wms/Wms/appsettings.json
@@ -38,7 +38,10 @@
 
   },
   "SignConfig": {
-    "AppKey": "90170307d4184844ac2a26b431f79980", //楠岀
+    "ERPAppKey": "90170307d4184844ac2a26b431f79980", //ERP楠岀
+    "MESAppKey": "90170307d4184844ac2a26b431f79981", //MES楠岀
+    "LIMSAppKey": "90170307d4184844ac2a26b431f79982", //LIMS楠岀
+    "FuMaAppKey": "90170307d4184844ac2a26b431f79983", //FuMa楠岀
     "Minutes": 5 //楠岀鏃堕棿 5鍒嗛挓
   },
   "Quartz": {

--
Gitblit v1.8.0