我有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)
答案 0 :(得分:2)
关于跟踪用户的问题,您可以执行以下操作(自定义解决方案,您也可以使用现有产品实现此目的)。点2a和b是并发的。
2.A。将令牌作为参数发送到重定向
2.b中。将令牌从第一个服务器发送到第二个服务器(可能通过HTTP)并将其关联到用户
对于域,您可以设置反向代理,如Apache,并将不同路径重定向到不同的服务器。示例:/ login将转到一个端口,其余的转到另一个端口
答案 1 :(得分:0)
我建议对Alexandru给出的方法采用类似的方法,但有一个转折 - 登录应生成JWT并编码所有相关的身份验证信息,以便您的node.js服务器可以验证它并用于授权相应的用户。
关于你问题的第二部分,Apache或nginx就足够了,就像Alexandru建议的那样。