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

JHipster and AngularJS: How to deal with the CSRF in AJAX requests properly?

我必须为 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})

这会产生错误。但是,然后我重新加载页面,一切都很顺利。然后我 grep'ed 来源并发现在 auth.session.service.js 中你使用以下代码来获取 CSRF 令牌: $http.get('api/account');

我将这段代码添加到我的网络应用程序中,现在效果很好。

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

默认情况下,JHipster 正确处理 CSRF,在服务器端使用 Spring 安全性,在客户端使用 AngularJS。

正如您所说,您只是从 JHipster 复制了一些代码:您真的在使用 JHipster,还是只是 copy/pasting 客户端代码?如果您没有正确配置服务器,这将不起作用,这就是我们的工作所在。

通常您不必 copy/paste AngularJS 配置,我们会为您完成所有这些。