ember.js - ember cookie 与服务器 cookie
问题描述
我正在使用 Ember 和 Ember-simple-auth。这个问题是为了消除我对 cookie 等的困惑。
我已将 ember 存储配置为 Cookie。
我的服务器正在发送要保存在客户端的 cookie。IE
Set-Cookie: dejavu.session=WwwLQjdfOoNz_-bhyYpBLvzew7IUaJuu; Path=/; Expires=Mon, 28-May-2018 15:59:30 GMT
我有这样的理解
浏览器自动从标头中的 set-cookie 捕获 cookie(意味着它应该在开发工具中可见)
浏览器会在后续请求中自动添加此 cookie。
我不需要对 Ember Simple Auth 做任何额外的事情,因为服务器 cookie 默认由浏览器处理。
基于这种理解,在 Chrome 检查器中,我只看到一个 ember-simple-auth cookie,没有别的。
我的问题是:
1- 我应该在开发工具中看到一个单独的 cookie(从服务器发送的那个)以及 Ember cookie(由 Ember 简单身份验证设置)吗?或者我的服务器 cookie 必须嵌入 Ember Cookie 中?我实际上在我的开发工具上没有看到服务器 cookie,所以我很困惑。
2- ember cookie 是 Ember 的存储,但服务器 cookie 是浏览器将在后续请求中捕获并在标头中发送的,这是正确的概念吗?
解决方案
行。经过大量的测试和探索,我找到了解决方案。我的两个问题的答案是:
chrome 开发工具中存在一个错误,它不显示从服务器发送的 cookie。我们不需要在 ember cookie 中嵌入服务器 cookie。浏览器自己管理 cookie。只有服务器必须发送一个cookie,然后浏览器将对其进行管理,例如,如果它过期则将其丢弃,然后自动将其添加到每个后续请求的标头中以通过api发送。我们可以在请求标头下的开发工具“网络”选项卡中看到发送请求时的 cookie。
使用 session cookie 和 Ember-simple-auth,我们不需要在 header 中设置 authoriser(用于在 header 中添加 cookie),因为这将覆盖 session cookie(由浏览器设置)。
所以当使用 Ember-simple-auth 和 session 认证时,正确的流程是:
添加插件
设置身份验证器(遵循 github 文档)
不要设置授权人(如文档中所述)