WebAPI + AngularJS应用程序中的AntiForgery Token实现

时间:2014-08-22 13:28:21

标签: angularjs asp.net-web-api antiforgerytoken

我有一个HTMl应用程序,它使用Web API和AngularJS。我们计划在App中实现AntiForgery令牌。我有一个Index.cshtml页面,其中我添加了这些代码

@using System.Web.Helpers

@functions{
    public string GetAntiForgeryToken()
    {
        string cookieToken, formToken;
        AntiForgery.GetTokens(null, out cookieToken, out formToken);
        return cookieToken + ":" + formToken;                
    }
}

并添加了这样的输入标记:

  <input id="antiForgeryToken" data-ng-model="antiForgeryToken" type="hidden" 
     data-ng-init="antiForgeryToken='@GetAntiForgeryToken()'" />

当我运行该应用时,我收到此错误:

错误消息:CS0117:'System.Web.Helpers.AntiForgery'不包含'GetTokens'的定义

参考:Web API and ValidateAntiForgeryToken

有人可以建议吗?

我错过了什么? 或者有更好的方法来实施防伪签名验证吗?

1 个答案:

答案 0 :(得分:2)

您可能错过了参考但未使用隐藏输入。将AntiForgeryToken添加到标题中。

客户端只需通过自定义HtmlHelper请求令牌,并在初始化视图时将其添加到请求标头:

@Html.RequestVerificationToken()

Action检索并验证它。

最简单的方法是为Post Action创建一个AntiForgeryValidate属性,用于验证标头请求中的令牌。

[AntiForgeryValidate]

看看这个:

http://blog.novanet.no/anti-forgery-tokens-using-mvc-web-api-and-angularjs/