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