防止Web API 2中的跨站点伪造

问题描述

我正在尝试使用验证令牌来防止Web API 2中的跨站点伪造,并且遇到了使代码得以执行的问题。

属性类中的代码:

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class,AllowMultiple = false,Inherited = true)]
public sealed class ValidateHeaderAntiForgeryTokenAttribute : FilterAttribute,IAuthorizationFilter
{
    public void OnAuthorization(AuthorizationContext filterContext)
    {
         if (filterContext == null)
         {
              throw new ArgumentNullException("filterContext");
         }
               
         var httpContext = filterContext.HttpContext;
         var cookie = httpContext.Request.Cookies[AntiForgeryConfig.CookieName];
         AntiForgery.Validate(cookie != null ? cookie.Value : null,httpContext.Request.Headers["__RequestVerificationToken"]);
               
    }
        
}

在我的发布方法中,利用 ValidateAntiForgeryToken 属性:

[APIAuthorize(Roles = IdentityRoles.NsccAdministrator)]
 [HttpPost()]
 [ValidateHeaderAntiForgeryToken]
 public int Post([FromBody] NsccNewPlanRequest data)
    { 
        // do some stuff and return 

    }

问题是,我似乎无法获得执行ValidateHeaderAntiForgeryToken属性中代码的过程。语法上所有内容都是正确的,并且可以识别该属性。它根本无法达到我设置的OnAuthorization方法断点。

对为什么有任何想法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)