From bca40047b9783d5aadf05d64b128191edb418b09 Mon Sep 17 00:00:00 2001
From: Demo <Demo@DESKTOP-CPA90BF>
Date: 星期四, 20 六月 2024 16:46:36 +0800
Subject: [PATCH] 修改验签特性

---
 Wms/Wms/Controllers/UpApiController.cs                  |   49 ++++++++++++++++++++++++
 Wms/Wms/appsettings.json                                |    6 +++
 Wms/Utility/Filter/ApiSignatureVerificationAttribute.cs |   40 ++++++++++++++++----
 Wms/Wms/Startup.cs                                      |    5 ++
 4 files changed, 91 insertions(+), 9 deletions(-)

diff --git a/Wms/Utility/Filter/ApiSignatureVerificationAttribute.cs b/Wms/Utility/Filter/ApiSignatureVerificationAttribute.cs
index dc85ffb..8d156f0 100644
--- a/Wms/Utility/Filter/ApiSignatureVerificationAttribute.cs
+++ b/Wms/Utility/Filter/ApiSignatureVerificationAttribute.cs
@@ -16,8 +16,8 @@
     [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false)]
     public class VerificationAttribute : ActionFilterAttribute
     {
-        private static readonly string appKey = "signature";//鍚庨潰鏀规垚鎷块厤缃枃浠剁殑
-        private static readonly double Minutes = 5;//鏃堕棿鎴冲繀椤�5鍒嗛挓鍐呯殑锛屽惁鍒欎笉閫氳繃
+        private static readonly string appKey = SignConfig.AppKey;
+        private static readonly double Minutes = SignConfig.Minutes;//鏃堕棿鎴冲繀椤�5鍒嗛挓鍐呯殑锛屽惁鍒欎笉閫氳繃
         public VerificationAttribute()
         {
 
@@ -71,19 +71,43 @@
 
         private bool IsTimestampValid(string timestamp)
         {
-            if (long.TryParse(timestamp, out var timestampSeconds))
+            //var logs = long.Parse(timestamp);
+            //var logs2 = int.Parse(timestamp);
+            ////if (long.TryParse(timestamp, out var timestampSeconds))
+            ////{
+            //    var requestDateTime = DateTimeOffset.FromUnixTimeSeconds(logs);
+            //    var currentDateTime = DateTimeOffset.UtcNow;
+
+            //    // 璁$畻鏃堕棿宸�
+            //    var timeDifference = currentDateTime - requestDateTime;
+
+            //    // 姣旇緝鏃堕棿宸槸鍚﹀湪鍏佽鐨勮寖鍥村唴
+            //    return timeDifference.TotalMinutes <= Minutes;
+
+            ////}
+            //return false;
+
+            try
             {
-                var requestDateTime = DateTimeOffset.FromUnixTimeSeconds(timestampSeconds);
+                var requestDateTime = DateTimeOffset.FromUnixTimeSeconds(long.Parse(timestamp));
                 var currentDateTime = DateTimeOffset.UtcNow;
 
                 // 璁$畻鏃堕棿宸�
                 var timeDifference = currentDateTime - requestDateTime;
 
                 // 姣旇緝鏃堕棿宸槸鍚﹀湪鍏佽鐨勮寖鍥村唴
-                return timeDifference.TotalMinutes <= 5;
+                return timeDifference.TotalMinutes <= Minutes;
             }
-
-            return false;
+            catch (Exception)
+            {
+                return false;
+            }
         }
     }
-}
+    public class SignConfig
+    {
+        public static string AppKey { get; set; }
+        public static double Minutes { get; set; }
+    }
+
+}
\ No newline at end of file
diff --git a/Wms/Wms/Controllers/UpApiController.cs b/Wms/Wms/Controllers/UpApiController.cs
index ab24289..e201dcd 100644
--- a/Wms/Wms/Controllers/UpApiController.cs
+++ b/Wms/Wms/Controllers/UpApiController.cs
@@ -14,6 +14,7 @@
 using Model.ModelVm.BllCheckVm;
 using WMS.DAL;
 using Microsoft.AspNetCore.Authorization;
+using Utility;
 
 namespace Wms.Controllers
 {
@@ -413,6 +414,10 @@
 
         #region 娴嬭瘯灏忔暟浣嶆暟鍊�
 
+        ///// <summary>
+        ///// 娴嬭瘯灏忔暟浣嶆暟鍊�
+        ///// </summary>
+        ///// <returns></returns>
         //[HttpGet]
         //public IActionResult Demo()
         //{
@@ -433,6 +438,50 @@
         //    }
         //}
 
+        /// <summary>
+        /// 娴嬭瘯楠岀鍔犲瘑
+        /// </summary>
+        /// <returns></returns>
+        [Verification]
+        [HttpPost]
+        public IActionResult Demo2(IdVm model)
+        {
+            var result = new ErpModel { Success = -1, Message = "" };
+            try
+            {
+                //var com = new Common();
+                //decimal s = 13.3450M;
+                //var sdf = com.GetViewVal(4, s);
+                result = new ErpModel { Success = -1, Message = "sdf.ToString()" };
+
+                return Ok(result);
+            }
+            catch (Exception e)
+            {
+                result.Message = e.Message;
+                return Ok(result);
+            }
+        }
+
+        [HttpGet]
+        public IActionResult Demo3()
+        {
+            var result = new ErpModel { Success = -1, Message = "" };
+            try
+            {
+                var time = DateTimeOffset.Now.ToUnixTimeSeconds();
+                result = new ErpModel { Success = 0, Message = time.ToString() };
+
+                return Ok(result);
+            }
+            catch (Exception e)
+            {
+                result.Message = e.Message;
+                return Ok(result);
+            }
+        }
+
+
         #endregion
     }
 }
diff --git a/Wms/Wms/Startup.cs b/Wms/Wms/Startup.cs
index cbab3dc..692d801 100644
--- a/Wms/Wms/Startup.cs
+++ b/Wms/Wms/Startup.cs
@@ -109,9 +109,12 @@
             #endregion
 
             //读取配置文件配置的接口交互的相关配置
-            services.Configure<ApiUrlConfig>(Configuration.GetSection("ApiUrlConfig"));
+            services.Configure<ApiUrlConfig>(Configuration.GetSection("ApiUrlConfig")); 
             //数据库配置
             BaseDbConfig.ConnectionString = Configuration.GetSection("AppSettings:ConnectionString").Value;
+            //验签配置文件
+            SignConfig.AppKey = Configuration.GetSection("SignConfig:AppKey").Value;  
+            SignConfig.Minutes = double.Parse(Configuration.GetSection("SignConfig:Minutes").Value);
 
 
             #region AutoMapper注入
diff --git a/Wms/Wms/appsettings.json b/Wms/Wms/appsettings.json
index a1ef7d5..3ae635d 100644
--- a/Wms/Wms/appsettings.json
+++ b/Wms/Wms/appsettings.json
@@ -36,5 +36,11 @@
 
     "EditLocateUrl": "/api/WCSApi/EditLocatStatus" //鍚屾淇敼鍌ㄤ綅淇℃伅
 
+  },
+  "SignConfig": {
+    "AppKey": "90170307d4184844ac2a26b431f79980", //楠岀
+    "Minutes": 5 //楠岀鏃堕棿 5鍒嗛挓
   }
+
+
 }

--
Gitblit v1.8.0