node.js - 跟踪两个不同服务器之间的用户

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

我有 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 是并发的。

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

2.a。将 token 作为参数发送到重定向

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

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

    关于node.js - 跟踪两个不同服务器之间的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38343597/

    相关文章:

    node.js - 在 serverless yml 中添加角色作为 CloudFormation 模板

    java - 我如何知道 Vaadin 7.x 中首次创建 session 的时间?

    java - 如果文件不存在则返回空响应

    spring-boot - 实现 Spring Boot 执行器自定义运行状况指示器时遇到问题

    java - 重构现有模式

    node.js - MEAN-stack,游戏逻辑的组织结构

    node.js - "Error: Cannot find module ' 少 '"Node.js 模块加载首选项/顺序/缓存?

    javascript - 在 Meteor 中为 CloudMQTT 配置 mqttConnect 选项

    php - 在 SESSION 中打印所有登录用户?

    python - Flurry 登录 Requests.Session() Python 3