【发布时间】:2019-06-13 12:15:25
【问题描述】:
我打算制作一个简单的管理员 CP。我是老派的 PHP 开发人员,通常都在一个巨大的单体服务器中,微服务的概念不适用。
在我的下一个应用中,我想拥有:
Express UI(前端) REST/GraphQL API 数据库服务器
这个想法是尽可能地限制对 DB 的访问。来自用户的所有请求都将仅发送到前端,API 将仅由我的解决方案中的其他服务器在内部使用。
我将在 API 和 DB 之间设置 IP 过滤器,并且可能在前端和 API 之间设置。但我担心的是 - 假设我希望一个管理员创建一个产品。虽然该用户将在前端使用会话进行身份验证,但我也需要对发送到 API 的请求进行某种程度的身份验证。暂时忽略 IP 过滤器,不希望任何人都能够向 API 发送 REST 请求。
我有几个想法,请给我你的意见:
使用 mongodb 在 API 和前端之间共享 express-session(可能在另一台服务器上) - 我看到了延迟问题
将 API 服务与前端放在同一台服务器上并使用 redis 共享会话 - 有点违背微服务分离的目的
登录时,为任何用户操作生成始终在前端和 API 之间转发的 jsonwebtoken - 窃取 cookie 将是一个问题,因为我只能验证用户登录,而不是他授权执行某些操作/p>
登录时,将私钥发送给管理员并让他签署所有转发到 API 的请求 - 这看起来像 CPU 过度杀伤
我缺少任何常用的解决方案吗?将前端和 API 中间人分开是过分的,还是一种好的做法?我可以轻松地合并 2 并直接从前端与 DB 对话,然后我可以像使用 PHP 一样通过会话管理所有内容。
感谢您的任何意见!干杯
【问题讨论】:
标签: node.js software-design conventions