【问题标题】:Track user between two different server在两个不同的服务器之间跟踪用户
【发布时间】:2016-11-15 13:32:33
【问题描述】:

我有 2 台服务器:

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

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(443端口)

【问题讨论】:

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


【解决方案1】:

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

  1. 成功登录后在第一台服务器上生成令牌

2.a.将令牌作为参数发送到重定向

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

  1. 检查与来自重定向的用户关联的令牌。如果这些不匹配,则抛出错误

对于域,您可以设置反向代理,如 Apache 并将不同的路径重定向到不同的服务器。示例:/login 将转到一个端口,其余的将转到另一个端口

【讨论】:

  • 谢谢@Alexandru,我会尝试自定义解决方案。您还提到了现有产品。你能说出一些产品的名字吗?我可以通过哪些?
【解决方案2】:

我会建议一种与 Alexandru 提供的方法类似的方法,但有所不同 - 登录应该生成 JWTs 并在那里编码所有相关的身份验证信息,以便您的 node.js 服务器可以验证它并用于授权用户因此。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2014-12-22
    • 1970-01-01
    • 2012-06-02
    相关资源
    最近更新 更多