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 不匹配错误,因为已发布新值。
我想在我的 SailsJS 和 Angular 2 应用程序中启用 CSRF,但我遇到了无穷无尽的问题。
Angular 应用程序位于一个页面上,该页面仅在用户登录后才能访问,由 Sails 策略控制。
然后我 http.get
来自 /csrfToken
路由的 CSRF 令牌并存储它,在执行 POST.
我不断收到 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 不匹配错误,因为已发布新值。