AjaxOnlyAttribute.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using Microsoft.AspNetCore.Mvc.Abstractions;
  2. using Microsoft.AspNetCore.Mvc.ActionConstraints;
  3. using Microsoft.AspNetCore.Routing;
  4. using System;
  5. namespace WMS.BZWeb.Extensions
  6. {
  7. /// <summary>
  8. /// 描 述:仅允许Ajax操作
  9. /// </summary>
  10. [AttributeUsage(AttributeTargets.Method)]
  11. public class AjaxOnlyAttribute : ActionMethodSelectorAttribute
  12. {
  13. /// <summary>
  14. /// 验证请求有效性
  15. /// </summary>
  16. /// <param name="routeContext"></param>
  17. /// <param name="action"></param>
  18. /// <returns></returns>
  19. public override bool IsValidForRequest(RouteContext routeContext, ActionDescriptor action)
  20. {
  21. return routeContext.HttpContext.Request.IsAjax();
  22. }
  23. }
  24. public static class HttpRequestExtensions
  25. {
  26. /// <summary>
  27. /// 判断是否是ajax请求
  28. /// </summary>
  29. /// <param name="req"></param>
  30. /// <returns></returns>
  31. public static bool IsAjax(this HttpRequest req)
  32. {
  33. bool result = false;
  34. var xreq = req.Headers.ContainsKey("x-requested-with");
  35. if (xreq)
  36. {
  37. result = req.Headers["x-requested-with"] == "XMLHttpRequest";
  38. }
  39. return result;
  40. }
  41. }
  42. }