RefererMiddleware.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using System.Text;
  2. using System.Web;
  3. using Common;
  4. using Microsoft.AspNetCore.Authorization;
  5. using Microsoft.AspNetCore.Authorization.Policy;
  6. using Model.Base;
  7. using Util;
  8. namespace Filters
  9. {
  10. public class RefererMiddleware
  11. {
  12. private readonly RequestDelegate _next;
  13. private readonly ILogger<RefererMiddleware> _log;
  14. public RefererMiddleware(RequestDelegate next, ILogger<RefererMiddleware> log)
  15. {
  16. _next = next;
  17. _log = log;
  18. }
  19. public async Task InvokeAsync(HttpContext context)
  20. {
  21. context.Request.EnableBuffering(); // 允许多次读取
  22. string authResult = AuthMiddleware.Do(context);
  23. if(authResult != "success")
  24. {
  25. context.Response.StatusCode = StatusCodes.Status401Unauthorized;
  26. await context.Response.WriteAsync(authResult);
  27. return;
  28. }
  29. int decryptResult = DecryptMiddleware.Do(context);
  30. if(decryptResult == 1)
  31. {
  32. await _next(context);
  33. return;
  34. }
  35. if(decryptResult == 2)
  36. {
  37. context.Response.StatusCode = StatusCodes.Status400BadRequest;
  38. await context.Response.WriteAsync("解密异常");
  39. return;
  40. }
  41. await _next(context);
  42. }
  43. }
  44. }