Wms/Utility/Filter/ApiSignatureVerificationAttribute.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/Wms/Controllers/UpApiController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/Wms/Startup.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/Wms/appsettings.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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; } } } 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 } } 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注入 Wms/Wms/appsettings.json
@@ -36,5 +36,11 @@ "EditLocateUrl": "/api/WCSApi/EditLocatStatus" //同步修改储位信息 }, "SignConfig": { "AppKey": "90170307d4184844ac2a26b431f79980", //验签 "Minutes": 5 //验签时间 5分钟 } }