ember cookie vs服务器cookie

时间:2018-05-28 13:55:00

标签: ember.js session-cookies ember-simple-auth

我正在使用Ember和Ember-simple-auth。这个问题是为了清除我对cookies等的困惑。

我已将ember存储配置为Cookie。

我的服务器正在发送一个cookie,以便在客户端保存。即

Set-Cookie: dejavu.session=WwwLQjdfOoNz_-bhyYpBLvzew7IUaJuu; Path=/; Expires=Mon, 28-May-2018 15:59:30 GMT

我明白了

  1. 浏览器自动从标题中的set-cookie捕获cookie(意味着它应该在开发工具中可见)

  2. 浏览器会在后续请求中自动添加此Cookie。

  3. 我不需要对Ember Simple Auth做任何额外的事情,因为服务器cookie默认由浏览器处理。

  4. 基于这种理解,在Chrome检查器中,我只看到一个ember-simple-auth的cookie,而不是其他任何内容。

    我的问题是:

    1-我是否应该在开发工具中看到一个单独的cookie(从服务器发送的cookie)以及Ember cookie(由Ember simple Auth设置)?或者我的服务器cookie必须嵌入Ember Cookie?我实际上没有在我的开发工具上看到服务器cookie,所以我很困惑。

    2-这是一个正确的概念,即ember cookie是Ember的存储,但服务器cookie是浏览器将在后续请求中捕获并在标头中发送的那个?

1 个答案:

答案 0 :(得分:0)

确定。经过大量的测试和探索后,我找到了解决方案。 回答我的两个问题是:

chrome dev工具中存在一个错误,它不会显示从服务器发送的cookie。我们不需要在ember cookie中嵌入服务器cookie。浏览器管理cookie本身。只有服务器必须发送一个cookie,然后浏览器将对其进行管理,例如,如果它过期则将其丢弃,然后自动将其添加到通过api发送的每个后续请求的标头中。我们可以在请求标题下的开发工具“网络”标签中查看请求发送时的Cookie。

使用会话cookie和Ember-simple-auth,我们不需要在标头中设置authoriser(用于在标头中添加cookie),因为这将覆盖会话cookie(由浏览器设置)。

因此,当使用Ember-simple-auth和会话身份验证时,正确的流程是:

  1. 添加插件

  2. setup authenticator(关注github docs)

  3. 不要设置授权人(如文档中所述)