From ecd2829ad660d8ac75a002b10255d29c2b8c5d1d Mon Sep 17 00:00:00 2001
From: Demo <Demo@DESKTOP-CPA90BF>
Date: 星期五, 21 六月 2024 16:57:32 +0800
Subject: [PATCH] 测试修改验签问题
---
Wms/Wms/Controllers/UpApiController.cs | 11 +++--
Wms/Wms/appsettings.json | 5 ++
Wms/Utility/Filter/ApiSignatureVerificationAttribute.cs | 44 +++++++++++++++++++--
Wms/Wms/Startup.cs | 5 ++
4 files changed, 54 insertions(+), 11 deletions(-)
diff --git a/Wms/Utility/Filter/ApiSignatureVerificationAttribute.cs b/Wms/Utility/Filter/ApiSignatureVerificationAttribute.cs
index 286c3bb..1f2adb2 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;
}
@@ -88,7 +120,6 @@
context.Result = new UnauthorizedResult();
return;
}
-
await base.OnActionExecutionAsync(context, next);
}
@@ -114,7 +145,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; }
}
diff --git a/Wms/Wms/Controllers/UpApiController.cs b/Wms/Wms/Controllers/UpApiController.cs
index 4929f8e..2d549d0 100644
--- a/Wms/Wms/Controllers/UpApiController.cs
+++ b/Wms/Wms/Controllers/UpApiController.cs
@@ -20,6 +20,7 @@
using System.Linq;
using System.Text;
using Newtonsoft.Json.Linq;
+using System.Runtime.CompilerServices;
namespace Wms.Controllers
{
@@ -447,6 +448,7 @@
/// 娴嬭瘯楠岀鍔犲瘑
/// </summary>
/// <returns></returns>
+ [ServiceFilter(typeof(ApiResponseActionFilter))]
[Verification]
[HttpPost]
public IActionResult Demo2(IdVm model)
@@ -468,11 +470,12 @@
}
}
- [HttpGet]
+ [HttpPost]
[ServiceFilter(typeof(ApiResponseActionFilter))]
- public string Demo3()
+ [UnitOfWork]
+ public string Demo3(IdVm model)
{
- string jsonParams = "{\"param1\": \"value1\", \"param2\": \"value2\"}";
+ string jsonParams = JsonConvert.SerializeObject(model);
// 鐢熸垚鏃堕棿鎴筹紙Unix 鏃堕棿鎴筹級
var timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString();
@@ -487,7 +490,7 @@
private static string GenerateSignature(string jsonParams)
{
- var appKey = "90170307d4184844ac2a26b431f79980";
+ var appKey = "90170307d4184844ac2a26b431f79981";
// 灏� JSON 瀛楃涓茶浆鎹负 JObject
JObject jObject = JObject.Parse(jsonParams);
diff --git a/Wms/Wms/Startup.cs b/Wms/Wms/Startup.cs
index e2e8614..fb30816 100644
--- a/Wms/Wms/Startup.cs
+++ b/Wms/Wms/Startup.cs
@@ -114,7 +114,10 @@
//数据库配置
BaseDbConfig.ConnectionString = Configuration.GetSection("AppSettings:ConnectionString").Value;
//验签配置文件
- SignConfig.AppKey = Configuration.GetSection("SignConfig:AppKey").Value;
+ SignConfig.ERPAppKey = Configuration.GetSection("SignConfig:ERPAppKey").Value;
+ SignConfig.MESAppKey = Configuration.GetSection("SignConfig:MESAppKey").Value;
+ SignConfig.LIMSAppKey = Configuration.GetSection("SignConfig:LIMSAppKey").Value;
+ SignConfig.FuMaAppKey = Configuration.GetSection("SignConfig:FuMaAppKey").Value;
SignConfig.Minutes = double.Parse(Configuration.GetSection("SignConfig:Minutes").Value);
diff --git a/Wms/Wms/appsettings.json b/Wms/Wms/appsettings.json
index 1958cff..bf36940 100644
--- a/Wms/Wms/appsettings.json
+++ b/Wms/Wms/appsettings.json
@@ -38,7 +38,10 @@
},
"SignConfig": {
- "AppKey": "90170307d4184844ac2a26b431f79980", //楠岀
+ "ERPAppKey": "90170307d4184844ac2a26b431f79980", //ERP楠岀
+ "MESAppKey": "90170307d4184844ac2a26b431f79981", //MES楠岀
+ "LIMSAppKey": "90170307d4184844ac2a26b431f79982", //LIMS楠岀
+ "FuMaAppKey": "90170307d4184844ac2a26b431f79983", //FuMa楠岀
"Minutes": 5 //楠岀鏃堕棿 5鍒嗛挓
},
"Quartz": {
--
Gitblit v1.8.0