using System.Text; using System.Web; using Common; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization.Policy; using Model.Base; using Util; namespace Filters { public class RefererMiddleware { private readonly RequestDelegate _next; private readonly ILogger _log; public RefererMiddleware(RequestDelegate next, ILogger log) { _next = next; _log = log; } public async Task InvokeAsync(HttpContext context) { context.Request.EnableBuffering(); // 允许多次读取 string authResult = AuthMiddleware.Do(context); if(authResult != "success") { context.Response.StatusCode = StatusCodes.Status401Unauthorized; await context.Response.WriteAsync(authResult); return; } int decryptResult = DecryptMiddleware.Do(context); if(decryptResult == 1) { await _next(context); return; } if(decryptResult == 2) { context.Response.StatusCode = StatusCodes.Status400BadRequest; await context.Response.WriteAsync("解密异常"); return; } await _next(context); } } }