Passport.js会话自身无效

时间:2017-08-02 16:38:15

标签: javascript sails.js passport.js

我们在前端使用Angular有两个Sails.js应用程序App AApp B,它们都使用Passport和OpenID Connect进行身份验证。它们都可以独立于另一个而发挥作用。

我们现在正尝试将人员从App A发送到App B,并在App B中设置会话变量。这实际上很好。问题是,在执行此操作后,App A中的会话无效,App A中的所有调用都无效,直到刷新完成。

将我们从App A发送到App B的操作是一个简单的链接,a标记带有href,可将其发送到新的应用。它似乎不会影响会话。以前有人有这样的问题吗?下一步要检查的是什么?

浏览器中的Cookie未更改;只是服务器上的会话被更改了。

1 个答案:

答案 0 :(得分:0)

所以这并没有得到回应:这里的问题似乎很可能是两个应用程序在不同的端口上被提升,但具有相同的域(localhost)。由于cookie被分配到而不管端口如何,因此这两个应用程序都从浏览器接收相同的cookie,因此在会话存储中共享一个插槽。当一个应用程序在会话中更改某些内容时,另一个应用程序会受到影响,因为它们共享会话。

由于OP声明在生产中这两个应用程序将位于不同的域中,这实际上只是开发中的一个问题。有几种不同的方法可以解决这个问题:

  1. 在隐身窗口中查看其中一个应用(或者#34;隐私浏览"或者您的特定浏览器调用它)。这样,无论域名如何,它都会获得自己的cookie。
  2. 使用http://localhost查看其中一个应用,使用http:/127.0.0.1查看另一个应用。不同的域名,不同的cookie。
  3. app1.localhostapp2.localhost条目添加到/etc/hosts文件(或等效的Windows),并在浏览时使用这些域。