无法在 .net mvc 和 angular 中生成 csrf 令牌

Trouble generating csrf tokens in .net mvc and angular

我正在遵循此指南:

http://www.asp.net/web-api/overview/security/preventing-cross-site-request-forgery-(csrf)-attacks

我已将此片段添加到我的 index.cshtml

的顶部
<script>
    @functions{
        public string TokenHeaderValue()
        {
            string cookieToken, formToken;
            AntiForgery.GetTokens(null, out cookieToken, out formToken);
            return cookieToken + ":" + formToken;                
        }
    }
</script>

问题是当我 运行 应用程序并检查页面时 - 我看到的只是一个空的脚本标签。

将此代码段添加到我的 $http 请求中:

headers: {
    'RequestVerificationToken': '@TokenHeaderValue()'
}

除了将字符串“@TokenHeaderValue()”添加到 headers 之外什么都不做。

整个应用程序是一个使用 Angular 的 SPA。唯一的 .cshtml 文件是引导 Angular 并包含样式等的索引。

我在这里错过了什么?

我能够通过将令牌设置为变量然后在 $http 请求期间引用令牌来解决我的问题。

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

    var csrfToken = '@TokenHeaderValue()';
</script>

然后在我的 Angular 服务中:

return $http.post('/api/httpRequest1', {
     headers: {'RequestVerificationToken': csrfToken}
);

这个方法现在对我来说效果很好。 对于以后阅读本文的任何人,这是我找到的另一个解决方案:http://blog.novanet.no/anti-forgery-tokens-using-mvc-web-api-and-angularjs