无法在 .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
我正在遵循此指南:
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