Demo
2024-06-20 bca40047b9783d5aadf05d64b128191edb418b09
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; }
    }
}