Sails JS CSRF Token 每次调用都不一样

Sails JS CSRF Token is different every call

我想在我的 SailsJS 和 Angular 2 应用程序中启用 CSRF,但我遇到了无穷无尽的问题。

Angular 应用程序位于一个页面上,该页面仅在用户登录后才能访问,由 Sails 策略控制。 然后我 http.get 来自 /csrfToken 路由的 CSRF 令牌并存储它,在执行 POST.

时将其添加到 HTTP headers

我不断收到 CSRF 不匹配错误,我 最终 意识到 /csrfToken 路由每次都返回不同的值,都来自 http.get以及从浏览器访问 URL 时。

当我通过 this tutorial(参见 00:30)的 multi-page 应用程序时,我不清楚是否发生了这种情况,其中 CSRF 值作为隐藏字段提交一个表单,并且似乎没有提及如何在 Sails 文档中更改此行为。

我如何配置 Sails 以便它为 session 维护单个 CSRF 值?

更新:现在可以使用了

我已经按照建议更新了答案。

原来是有不同的问题导致了我的问题。

我的代码变得如此支离破碎,以至于我没有意识到我引用了一个将 CSRF 放入 header 错误的旧函数。

我回滚了一堆 client-side 代码,然后神奇地 CSRF 值在 Ajax 调用之间保持一致,并且在 POST 请求中也能正常工作。

所以我猜我的碎片代码中有什么东西导致 CSRF 令牌在 API 次调用之间发生变化,但我不知道它是什么。

在浏览器中访问 /csrfToken 每次仍然会产生不同的结果,但似乎不会影响 API 调用。

编辑

我发现 CSRF 会随着对 /csrfToken 的每个请求而变化。我的一个错误是,在我第一次存储 CSRF 值之后,我后来(不小心)再次请求了一个新的 /csrfToken,这使存储的值无效。使用存储的值将导致 CSRF 不匹配错误,因为已发布新值。