所有都用SimApiUitl.Json,增加了Gate,auth增加了获取所有token
This commit is contained in:
@@ -1,8 +1,5 @@
|
||||
using System.Text.Json;
|
||||
using System.Threading.Tasks;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.Caching.Distributed;
|
||||
using SimApi.Communications;
|
||||
using SimApi.Helpers;
|
||||
|
||||
namespace SimApi.Middlewares;
|
||||
@@ -12,7 +9,7 @@ namespace SimApi.Middlewares;
|
||||
/// </summary>
|
||||
public class SimApiAuthMiddleware(RequestDelegate next)
|
||||
{
|
||||
public Task Invoke(HttpContext httpContext, IDistributedCache cache, SimApiAuth auth)
|
||||
public Task Invoke(HttpContext httpContext, SimApiAuth auth)
|
||||
{
|
||||
string? token = null;
|
||||
if (httpContext.Request.Headers.TryGetValue("Token", out var header))
|
||||
@@ -24,8 +21,10 @@ public class SimApiAuthMiddleware(RequestDelegate next)
|
||||
var login = auth.GetLogin(token);
|
||||
if (login != null)
|
||||
{
|
||||
httpContext.Items.Add("LoginToken", token);
|
||||
httpContext.Items.Add("LoginInfo", login);
|
||||
}
|
||||
|
||||
return next(httpContext);
|
||||
}
|
||||
}
|
||||
@@ -29,9 +29,10 @@ public class SimApiExceptionMiddleware(RequestDelegate next, ILogger<SimApiExcep
|
||||
case 200:
|
||||
case 301:
|
||||
case 302:
|
||||
break;
|
||||
case 404:
|
||||
throw new SimApiException(context.Response.StatusCode, "请求的接口不存在");
|
||||
break;
|
||||
// case 404:
|
||||
// throw new SimApiException(context.Response.StatusCode, "请求的接口不存在");
|
||||
default:
|
||||
throw new SimApiException(context.Response.StatusCode);
|
||||
}
|
||||
@@ -79,6 +80,7 @@ public class SimApiExceptionMiddleware(RequestDelegate next, ILogger<SimApiExcep
|
||||
|
||||
context.Response.StatusCode = 200;
|
||||
context.Response.ContentType = "application/json";
|
||||
context.Response.ContentLength = null; // 清除可能已设置的 Content-Length
|
||||
await context.Response.WriteAsync(response.ToString());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using SimApi.Communications;
|
||||
using SimApi.Configurations;
|
||||
using SimApi.Helpers;
|
||||
|
||||
namespace SimApi.Middlewares;
|
||||
|
||||
public class SimApiGateAuthMiddleware(RequestDelegate next, ILogger<SimApiGateAuthMiddleware> logger)
|
||||
{
|
||||
public Task Invoke(HttpContext httpContext, SimApiOptions simApiOptions)
|
||||
{
|
||||
if (httpContext.Request.Headers.TryGetValue("X-SimApi-Gate-Auth", out var auth) &&
|
||||
httpContext.Request.Headers.TryGetValue("X-SimApi-Gate-Time", out var time) &&
|
||||
httpContext.Request.Headers.TryGetValue("X-SimApi-Gate-Sign", out var sign))
|
||||
{
|
||||
var signStr =
|
||||
$"appId={simApiOptions.SimApiGateAuthOptions.AppId}&auth={auth}&time={time}&appKey={simApiOptions.SimApiGateAuthOptions.AppKey}";
|
||||
logger.LogDebug($"签名字符串 => {signStr}");
|
||||
if (SimApiUtil.Md5(signStr) == sign && !string.IsNullOrEmpty(auth))
|
||||
{
|
||||
var login = SimApiUtil.Base64Decode<SimApiLoginItem>(auth!);
|
||||
httpContext.Items.Add("LoginInfo", login);
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.LogDebug("签名不匹配");
|
||||
}
|
||||
}
|
||||
|
||||
return next(httpContext);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user