From 62b3bf8205277b9bdceaa83f0d7e5d73312e1780 Mon Sep 17 00:00:00 2001
From: bklLiudl <673013083@qq.com>
Date: 星期五, 23 八月 2024 14:48:02 +0800
Subject: [PATCH] 解决冲突
---
Wms/Utility/Filter/ApiSignatureVerificationAttribute.cs | 72 +++++++++++++++++++++++++++--------
1 files changed, 55 insertions(+), 17 deletions(-)
diff --git a/Wms/Utility/Filter/ApiSignatureVerificationAttribute.cs b/Wms/Utility/Filter/ApiSignatureVerificationAttribute.cs
index 286c3bb..511d68d 100644
--- a/Wms/Utility/Filter/ApiSignatureVerificationAttribute.cs
+++ b/Wms/Utility/Filter/ApiSignatureVerificationAttribute.cs
@@ -9,6 +9,8 @@
using System.Threading.Tasks;
using Utility.Tools;
using static System.Net.Mime.MediaTypeNames;
+using Utility.Entity;
+using Microsoft.AspNetCore.Http;
namespace Utility
{
@@ -18,11 +20,11 @@
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false)]
public class VerificationAttribute : ActionFilterAttribute
{
- private static readonly string appKey = SignConfig.AppKey;
+ private string appKey;
private static readonly double Minutes = SignConfig.Minutes;//鏃堕棿鎴冲繀椤�5鍒嗛挓鍐呯殑锛屽惁鍒欎笉閫氳繃
public VerificationAttribute()
{
-
+
}
public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
@@ -30,11 +32,30 @@
var request = context.HttpContext.Request;
// 鑾峰彇璇锋眰涓殑鏃堕棿鎴冲拰绛惧悕
+ var system = request.Headers["System"].FirstOrDefault();
var timestamp = request.Headers["Timestamp"].FirstOrDefault();
var signature = request.Headers["Signature"].FirstOrDefault();
//var timestamp = "1718873584";
//var signature = "1718873584";
-
+ switch (system)
+ {
+ case "ERP":
+ appKey = SignConfig.ERPAppKey;
+ break;
+ case "MES":
+ appKey = SignConfig.MESAppKey;
+ break;
+ case "LIMS":
+ appKey = SignConfig.LIMSAppKey;
+ break;
+ case "FuMa":
+ appKey = SignConfig.FuMaAppKey;
+ break;
+ default:
+ context.Result = new UnauthorizedResult();
+ return;
+ }
+
if (string.IsNullOrEmpty(timestamp) || string.IsNullOrEmpty(signature))
{
context.Result = new UnauthorizedResult();
@@ -45,6 +66,17 @@
if (!IsTimestampValid(timestamp))
{
context.Result = new UnauthorizedResult();
+ var apiResponse = new ApiResponse<object>(
+ 401,
+ "error",
+ "鏃堕棿澶辨晥"
+ );
+
+ var json = JsonConvert.SerializeObject(apiResponse);
+ context.HttpContext.Response.ContentType = "application/json";
+ context.HttpContext.Response.ContentLength = Encoding.UTF8.GetByteCount(json);
+ await context.HttpContext.Response.WriteAsync(json);
+ await base.OnActionExecutionAsync(context, next);
return;
}
@@ -59,20 +91,24 @@
// 鍙嶅簭鍒楀寲 JSON 鍙傛暟涓� JObject
JObject jObject = null;
- try
+ Dictionary<string, string> filteredProperties = new Dictionary<string, string>();
+ if (jsonParams != null)
{
- jObject = JObject.Parse(jsonParams);
+ try
+ {
+ jObject = JObject.Parse(jsonParams);
+ // 杩囨护鎺夋暟缁勭被鍨嬬殑灞炴��
+ filteredProperties = jObject.Properties()
+ .Where(p => p.Value.Type != JTokenType.Array)
+ .ToDictionary(p => p.Name, p => p.Value.ToString());
+ }
+ catch (JsonReaderException)
+ {
+ // JSON 鏍煎紡閿欒锛岃繑鍥炴湭缁忔巿鏉�
+ context.Result = new UnauthorizedResult();
+ return;
+ }
}
- catch (JsonReaderException)
- {
- // JSON 鏍煎紡閿欒锛岃繑鍥炴湭缁忔巿鏉�
- context.Result = new UnauthorizedResult();
- return;
- }
- // 杩囨护鎺夋暟缁勭被鍨嬬殑灞炴��
- var filteredProperties = jObject.Properties()
- .Where(p => p.Value.Type != JTokenType.Array)
- .ToDictionary(p => p.Name, p => p.Value.ToString());
filteredProperties.Add("timestamp", timestamp);
filteredProperties.Add("appKey", appKey);
@@ -88,7 +124,6 @@
context.Result = new UnauthorizedResult();
return;
}
-
await base.OnActionExecutionAsync(context, next);
}
@@ -114,7 +149,10 @@
}
public class SignConfig
{
- public static string AppKey { get; set; }
+ public static string ERPAppKey { get; set; }
+ public static string MESAppKey { get; set; }
+ public static string LIMSAppKey { get; set; }
+ public static string FuMaAppKey { get; set; }
public static double Minutes { get; set; }
}
--
Gitblit v1.8.0