【问题标题】:Sails JS CSRF Token is different every callSails JS CSRF Token 每次调用都不同
【发布时间】:2016-12-22 08:46:00
【问题描述】:

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

Angular 应用程序位于只有在用户登录后才能访问的页面上,由 Sails 策略控制。 然后我 http.get 来自 /csrfToken 路由的 CSRF 令牌并将其存储,在执行 POST 时将其添加到 HTTP 标头中。

我不断收到 CSRF 不匹配错误,我终于意识到 /csrfToken 路由每次都返回不同的值,无论是从 http.get 还是从浏览器访问 URL 时.

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

如何配置 Sails 以便为会话维护单个 CSRF 值?

更新:现在可以使用了

我已按照建议将我的更新作为答案。

【问题讨论】:

  • 请编辑您的答案并将其作为您自己问题的答案,然后选择它作为批准的答案。它会使问题得到应有的回答。

标签: ajax angular sails.js csrf


【解决方案1】:

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

我的代码变得如此碎片化,以至于我没有意识到我引用了一个旧函数,该函数将 CSRF 错误地放入了标头中。

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

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

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

编辑

我发现 CSRF 会随着对/csrfToken 的每个请求而改变。我的一个错误是,在我第一次存储 CSRF 值之后(意外地)稍后再次请求一个新的/csrfToken,然后使存储的值无效。使用存储的值将导致 CSRF 不匹配错误,因为已发出新值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 2013-03-10
    • 2017-09-15
    • 2023-04-11
    • 1970-01-01
    相关资源
    最近更新 更多