自定义操作筛选器属性在调用Antiforgery.Validate时抛出空引用异常

时间:2015-05-19 13:38:23

标签: asp.net-core asp.net-core-mvc

我们使用angularjs($ http.post)来调用控制器。在控制器中,我们定义了一个自定义操作文件管理器属性,用于验证防伪标记。 AntiForgery.Validate在以下位置抛出一个空引用异常:在Microsoft.AspNet.Mvc.ActionFilterAttribute.d__6.MoveNext()。

我们使用的是Microsoft.AspNet.Mvc - 6.0.0-beta4

自定义属性代码如下。

   public override void OnActionExecuting(ActionExecutingContext actionContext)
  {
    if (actionContext == null)
    {
        throw new ArgumentNullException("actionContext");
    }

    base.OnActionExecuting(actionContext);

    var cookieToken = string.Empty;
    var formToken = string.Empty;
    string[] tokenHeaders = null;
    string[] tokens = null;

    if (actionContext.HttpContext.Request.Headers.TryGetValue("__RequestVerificationToken", out tokenHeaders))
            {
                tokens = tokenHeaders.First().Split(':');
                if (tokens != null && tokens.Length == 2)
                {
                        cookieToken = tokens[0];
                        formToken = tokens[1];
                }
        }

        AntiForgery.Validate(actionContext.HttpContext, new AntiForgeryTokenSet(formToken, cookieToken));
}

0 个答案:

没有答案