跟踪两个不同服务器之间的用户

时间:2016-07-13 05:52:40

标签: node.js session spring-boot cross-domain

我有2台服务器:

1)使用Spring启动的端口8443上的Apache tomcat服务器

2)端口443上的节点服务器

它们都是https。

现在,应用程序的设计使服务器1处理登录页面&服务器2处理仪表板

因此,用户使用以下命令登录:https // localhost:8443 / login

成功登录后我做了

window.open(https // localhost:443 / dashboard?userName = xyz," _self");

将用户重定向到节点服务器托管的仪表板。

现在我的问题是如果用户直接点击https // localhost:443 / dashboard?userName = xyz,那么他可以访问错误的仪表板。

用户只应在登录后访问仪表板。

但我无法使用会话,因为无法在2台服务器之间共享会话。

那么,如果用户已经在服务器1&他被允许在服务器2中看到仪表板?

我也计划购买域名 但是我如何通过2个端口托管它? (8443& 443)

我想要像这样的东西 1)https //example.com/login(端口8443)
2)https //example.com/dashboard?userName=xyz(port 443)

2 个答案:

答案 0 :(得分:2)

关于跟踪用户的问题,您可以执行以下操作(自定义解决方案,您也可以使用现有产品实现此目的)。点2a和b是并发的。

  1. 成功登录后在第一台服务器上生成令牌
  2. 2.A。将令牌作为参数发送到重定向

    2.b中。将令牌从第一个服务器发送到第二个服务器(可能通过HTTP)并将其关联到用户

    1. 使用重定向的内容检查与用户关联的令牌。如果这些不匹配则抛出错误
    2. 对于域,您可以设置反向代理,如Apache,并将不同路径重定向到不同的服务器。示例:/ login将转到一个端口,其余的转到另一个端口

答案 1 :(得分:0)

我建议对Alexandru给出的方法采用类似的方法,但有一个转折 - 登录应生成JWT并编码所有相关的身份验证信息,以便您的node.js服务器可以验证它并用于授权相应的用户。

关于你问题的第二部分,Apache或nginx就足够了,就像Alexandru建议的那样。