我有 2 个服务器:
1) 使用 Spring boot 在端口 8443 上运行 Apache tomcat 服务器
2) Node 服务器端口443
两者都是https。
现在应用程序的设计方式是服务器 1 处理登录页面,服务器 2 处理仪表板
因此用户使用以下方式登录:https//localhost:8443/login
成功登录后我会执行
window.open(https//localhost:443/dashboard?userName=xyz,"_self");
它将用户重定向到 Node 服务器托管的仪表板。
现在我的问题是,如果用户直接点击 https://localhost:443/dashboard?userName=xyz,那么他可以访问仪表板,这是错误的。
用户应始终仅在登录后访问仪表板。
但是我无法使用 session ,因为 session 无法在两台服务器之间共享。
那么,如果用户已登录服务器 1 并且允许他查看服务器 2 中的仪表板,我该如何跟踪?
我还计划购买域名 但如何通过 2 个端口托管它呢? (8443 和 443)
我想要类似的东西
1)https://example.com/login(端口8443)
2)https://example.com/dashboard?userName=xyz(端口443)
最佳答案
对于有关跟踪用户的问题,您可以执行以下操作(自定义解决方案,您也可以使用现有产品来实现此目的)。第 2 点 a 和 b 是并发的。
- 成功登录后在第一台服务器上生成 token
2.a。将 token 作为参数发送到重定向
2.b.将 token 从第一个服务器发送到第二个服务器(可能通过 HTTP)并将其关联到用户
- 使用来自重定向的内容检查与用户关联的 token 。如果这些不匹配,则会抛出错误
对于域,您可以设置反向代理,例如Apache,并将不同的路径重定向到不同的服务器。示例:/login 将转到一个端口,其余的将转到另一个端口
关于node.js - 跟踪两个不同服务器之间的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38343597/