Demo
2024-06-20 bca40047b9783d5aadf05d64b128191edb418b09
修改验签特性
4个文件已修改
100 ■■■■■ 已修改文件
Wms/Utility/Filter/ApiSignatureVerificationAttribute.cs 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/Controllers/UpApiController.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/Startup.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/appsettings.json 6 ●●●●● 补丁 | 查看 | 原始文档 | 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分钟
  }
}