Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Passport.js会话本身无效_Javascript_Sails.js_Passport.js - Fatal编程技术网

Javascript Passport.js会话本身无效

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,将它们发送到新应用程序。它似乎根

我们有两个Sails.js应用程序在前端使用Angular,
App A
App B
,它们都使用Passport和OpenID Connect进行身份验证。他们两人都能独立工作

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

将我们从
应用程序A
发送到
应用程序B
的操作是一个简单的链接,一个
A
标记,带有
href
,将它们发送到新应用程序。它似乎根本不应该影响会话。以前有人遇到过类似的问题吗?下一步要检查什么


浏览器中的Cookie保持不变;只是服务器上的会话被更改了。

只是为了避免出现问题:这里的问题很可能是两个应用程序在不同的端口上被解除,但使用相同的域(
localhost
)。由于cookie被分配给域而不考虑端口,因此这两个应用都从浏览器接收相同的cookie,因此在会话存储中共享一个插槽。当一个应用程序在会话中更改某些内容时,另一个应用程序会受到影响,因为它们共享一个会话

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

  • 在匿名窗口中查看其中一个应用程序(或“私人浏览”,或您的特定浏览器所称的任何应用程序)。这样,它将获得自己的cookie,而不考虑域
  • 使用
    http://localhost
    ,另一个使用http://127.0.0.1。不同的域,不同的cookie
  • app1.localhost
    app2.localhost
    条目添加到
    /etc/hosts
    文件(或Windows等效文件)中,并在浏览时使用这些域

  • 这样就不会没有答案了:这里的问题很可能是两个应用程序在不同的端口上被解除,但使用相同的域(
    localhost
    )。由于cookie被分配给域而不考虑端口,因此这两个应用都从浏览器接收相同的cookie,因此在会话存储中共享一个插槽。当一个应用程序在会话中更改某些内容时,另一个应用程序会受到影响,因为它们共享一个会话

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

  • 在匿名窗口中查看其中一个应用程序(或“私人浏览”,或您的特定浏览器所称的任何应用程序)。这样,它将获得自己的cookie,而不考虑域
  • 使用
    http://localhost
    ,另一个使用http://127.0.0.1。不同的域,不同的cookie
  • app1.localhost
    app2.localhost
    条目添加到
    /etc/hosts
    文件(或Windows等效文件)中,并在浏览时使用这些域

  • 这两个应用程序在不同的域上吗?或者只是不同的端口?cookie不关心端口,因此如果你在同一个域上有两个应用程序,但端口不同,那么它们最终会共享一个cookie。哦,好吧……是的,它们在本地不同的端口上,但都在本地主机上。在生产和测试中,它们将位于不同的域上。因此,即使此错误是因为服务器上的会话被更改,也可能是因为它们都位于本地主机上,但端口不同?这是我的猜测。这两个站点共享一个cookie,从而在会话存储中共享一个插槽。通过在本地启动两台服务器并在上查看一台和另一台,您可以非常轻松地测试这一点。如果问题消失了,你就有问题了!这两个应用程序在不同的域上吗?或者只是不同的端口?cookie不关心端口,因此如果你在同一个域上有两个应用程序,但端口不同,那么它们最终会共享一个cookie。哦,好吧……是的,它们在本地不同的端口上,但都在本地主机上。在生产和测试中,它们将位于不同的域上。因此,即使此错误是因为服务器上的会话被更改,也可能是因为它们都位于本地主机上,但端口不同?这是我的猜测。这两个站点共享一个cookie,从而在会话存储中共享一个插槽。通过在本地启动两台服务器并在上查看一台和另一台,您可以非常轻松地测试这一点。如果问题消失了,你就有问题了!这就是问题所在。很抱歉花了这么长时间才回来接受答案!一旦我们部署到测试中,问题就不再出现,因此我们正在使用您上面提到的解决方法。这就是问题所在。很抱歉花了这么长时间才回来接受答案!一旦我们部署到测试中,问题就不再出现,因此我们正在使用您上面提到的解决方法。