是否可以在使用 ember-simple-auth 设计的同时通过 cookie_store 实现 Rails csrf?
像这样的指南总是停用Rails.application.config.session_store
,据我了解,这不允许 Rails 跟踪 csrf 令牌,这会导致 Rails 失去对 sessiong 的跟踪。在尝试了许多解决方案后,包括:
require jquery_ujs
在 Rails 宣言上。Rails.application.config.session_store :disabled
.- https://github.com/abuiles/rails-csrf。
- 更改Ember.js 适配器以附加 CSRF。
最终结果仍然几乎相同:
如果protect_from_forgery 设置为:exception 而不是:null_session,则无法验证CSRF 令牌真实性后跟完成的422 Unprocessable Entity 。
交易示例:
部分请求标题:
X-CSRF-Token:1vGIZ6MFV4kdJ0yYGFiDq54DV2RjEIaq57O05PSdNdLaqsXMzEGdQIOeSyAWG1bZ+dg7oI6I2xXaBABSOWQbrQ==
响应者标题
HTTP/1.1 422 Unprocessable Entity
Content-Type: text/plain; charset=utf-8
X-Request-Id: 71e94632-ad98-4b3f-97fb-e274a2ec1c7e
X-Runtime: 0.050747
Content-Length: 74162
The response also attaches the following:
Session dump
_csrf_token: "jFjdzKn/kodNnJM0DXLutMSsemidQxj7U/hrGmsD3DE="
我的csrf 分支(分支已被删除)的rails-csrf响应。
beforeModel() {
return this.csrf.fetchToken();
},
Partial dump of the return statement:
_result: Object
param: "authenticity_token"
token: "1vGIZ6MFV4kdJ0yYGFiDq54DV2RjEIaq57O05PSdNdLaqsXMzEGdQIOeSyAWG1bZ+dg7oI6I2xXaBABSOWQbrQ=="
据我了解,所有这些尝试的解决方案都有一个共同的根源: session_store 被禁用......