Javascript Passport.js会话本身无效
我们有两个Sails.js应用程序在前端使用Angular,Javascript Passport.js会话本身无效,javascript,sails.js,passport.js,Javascript,Sails.js,Passport.js,我们有两个Sails.js应用程序在前端使用Angular,App A和App B,它们都使用Passport和OpenID Connect进行身份验证。他们两人都能独立工作 我们现在正在尝试将人员从应用程序A发送到应用程序B,并在执行此操作时在应用程序B中设置会话变量。这实际上很好用。问题是,执行此操作后,App A中的会话将无效,App A中的所有调用在刷新完成之前都不会工作 将我们从应用程序A发送到应用程序B的操作是一个简单的链接,一个A标记,带有href,将它们发送到新应用程序。它似乎根
App A
和App B
,它们都使用Passport和OpenID Connect进行身份验证。他们两人都能独立工作
我们现在正在尝试将人员从应用程序A
发送到应用程序B
,并在执行此操作时在应用程序B
中设置会话变量。这实际上很好用。问题是,执行此操作后,App A
中的会话将无效,App A
中的所有调用在刷新完成之前都不会工作
将我们从应用程序A
发送到应用程序B
的操作是一个简单的链接,一个A
标记,带有href
,将它们发送到新应用程序。它似乎根本不应该影响会话。以前有人遇到过类似的问题吗?下一步要检查什么
浏览器中的Cookie保持不变;只是服务器上的会话被更改了。只是为了避免出现问题:这里的问题很可能是两个应用程序在不同的端口上被解除,但使用相同的域(
localhost
)。由于cookie被分配给域而不考虑端口,因此这两个应用都从浏览器接收相同的cookie,因此在会话存储中共享一个插槽。当一个应用程序在会话中更改某些内容时,另一个应用程序会受到影响,因为它们共享一个会话
由于OP声明,在生产中,这两个应用程序将位于不同的领域,这实际上只是开发中的一个问题。有几种不同的方法可以解决此问题:
http://localhost
,另一个使用http://127.0.0.1。不同的域,不同的cookieapp1.localhost
和app2.localhost
条目添加到/etc/hosts
文件(或Windows等效文件)中,并在浏览时使用这些域这样就不会没有答案了:这里的问题很可能是两个应用程序在不同的端口上被解除,但使用相同的域(
localhost
)。由于cookie被分配给域而不考虑端口,因此这两个应用都从浏览器接收相同的cookie,因此在会话存储中共享一个插槽。当一个应用程序在会话中更改某些内容时,另一个应用程序会受到影响,因为它们共享一个会话
由于OP声明,在生产中,这两个应用程序将位于不同的领域,这实际上只是开发中的一个问题。有几种不同的方法可以解决此问题:
http://localhost
,另一个使用http://127.0.0.1。不同的域,不同的cookieapp1.localhost
和app2.localhost
条目添加到/etc/hosts
文件(或Windows等效文件)中,并在浏览时使用这些域这两个应用程序在不同的域上吗?或者只是不同的端口?cookie不关心端口,因此如果你在同一个域上有两个应用程序,但端口不同,那么它们最终会共享一个cookie。哦,好吧……是的,它们在本地不同的端口上,但都在本地主机上。在生产和测试中,它们将位于不同的域上。因此,即使此错误是因为服务器上的会话被更改,也可能是因为它们都位于本地主机上,但端口不同?这是我的猜测。这两个站点共享一个cookie,从而在会话存储中共享一个插槽。通过在本地启动两台服务器并在上查看一台和另一台,您可以非常轻松地测试这一点。如果问题消失了,你就有问题了!这两个应用程序在不同的域上吗?或者只是不同的端口?cookie不关心端口,因此如果你在同一个域上有两个应用程序,但端口不同,那么它们最终会共享一个cookie。哦,好吧……是的,它们在本地不同的端口上,但都在本地主机上。在生产和测试中,它们将位于不同的域上。因此,即使此错误是因为服务器上的会话被更改,也可能是因为它们都位于本地主机上,但端口不同?这是我的猜测。这两个站点共享一个cookie,从而在会话存储中共享一个插槽。通过在本地启动两台服务器并在上查看一台和另一台,您可以非常轻松地测试这一点。如果问题消失了,你就有问题了!这就是问题所在。很抱歉花了这么长时间才回来接受答案!一旦我们部署到测试中,问题就不再出现,因此我们正在使用您上面提到的解决方法。这就是问题所在。很抱歉花了这么长时间才回来接受答案!一旦我们部署到测试中,问题就不再出现,因此我们正在使用您上面提到的解决方法。