我们在前端使用Angular有两个Sails.js应用程序App A
和App B
,它们都使用Passport和OpenID Connect进行身份验证。它们都可以独立于另一个而发挥作用。
我们现在正尝试将人员从App A
发送到App B
,并在App B
中设置会话变量。这实际上很好。问题是,在执行此操作后,App A
中的会话无效,App A
中的所有调用都无效,直到刷新完成。
将我们从App A
发送到App B
的操作是一个简单的链接,a
标记带有href
,可将其发送到新的应用。它似乎不会影响会话。以前有人有这样的问题吗?下一步要检查的是什么?
浏览器中的Cookie未更改;只是服务器上的会话被更改了。
答案 0 :(得分:0)
所以这并没有得到回应:这里的问题似乎很可能是两个应用程序在不同的端口上被提升,但具有相同的域(localhost
)。由于cookie被分配到域而不管端口如何,因此这两个应用程序都从浏览器接收相同的cookie,因此在会话存储中共享一个插槽。当一个应用程序在会话中更改某些内容时,另一个应用程序会受到影响,因为它们共享会话。
由于OP声明在生产中这两个应用程序将位于不同的域中,这实际上只是开发中的一个问题。有几种不同的方法可以解决这个问题:
http://localhost
查看其中一个应用,使用http:/127.0.0.1
查看另一个应用。不同的域名,不同的cookie。app1.localhost
和app2.localhost
条目添加到/etc/hosts
文件(或等效的Windows),并在浏览时使用这些域。