JHipster和AngularJS:如何正确处理AJAX请求中的CSRF?

时间:2015-10-21 10:04:24

标签: ajax angularjs csrf jhipster

我必须为JHipster创建另一个简单的html页面,它必须执行AJAX请求。它包含一个很小的AngularJS应用程序,所以我复制了一些JHipster代码:

var app = angular.module('app', ['dep1', 'dep2', 'dep3']); app.config(function ($httpProvider) { $httpProvider.defaults.xsrfCookieName = 'CSRF-TOKEN'; $httpProvider.defaults.xsrfHeaderName = 'X-CSRF-TOKEN'; });

然后我执行这样的HTTP请求:

$http.post("/controller/execute", {code: ourCode})

这会产生错误。然而,然后我重新加载页面,一切都像魅力。然后我查看了源代码,发现在auth.session.service.js中使用以下代码来获取CSRF令牌: $http.get('api/account');

我已将此片段添加到我的webapp中,现在效果很好。

但是我想知道是否有更好的解决方案(避免额外请求?)。 我怀疑这个问题太宽泛了,但不能想到如何简单化。

1 个答案:

答案 0 :(得分:0)

默认情况下,JHipster正确处理CSRF,使用服务器端的Spring Security和客户端的AngularJS。

正如你所说,你刚从JHipster复制了一些代码:你真的使用JHipster,还是只复制/粘贴客户端代码?如果您没有正确配置服务器,这将无法正常工作。

通常您不必复制/粘贴AngularJS配置,我们会为您完成所有这些。