| | |
| | | [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() |
| | | { |
| | | |
| | |
| | | |
| | | 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; } |
| | | } |
| | | |
| | | } |