gpt4 book ai didi

node.js - 评估 FeatherJS 身份验证需求

转载 作者:搜寻专家 更新时间:2023-11-01 00:29:49 24 4
gpt4 key购买 nike

我和我的同事想构建一个聊天应用程序(ReactJS <-> NodeJS),我们一直在寻找最好的框架来实现这一目标。 FeathersJS 似乎无疑是最稳定和功能最丰富的 socket.io 包装器。

但是,由于我们希望允许我们的应用程序扩展,我们决定将此聊天功能拆分到与我们的主 Node 后端不同的 Node 进程中。

然而,聊天功能仍然需要身份验证和授权,我们希望避免对这两项服务进行重复身份验证。因此,我们提出的解决方案是使用 session cookie 查询主 Node 后端以在让用户使用聊天服务之前对用户进行身份验证。

FeathersJS 是建立持久的套接字连接,还是会为每条发送/接收的消息建立套接字连接?在第一种情况下,我们可以继续我们的架构,而在第二种情况下,我们会由于这会在主后端产生高负载,因此必须进行审查。

谢谢!

最佳答案

有多种拆分服务的方法,每种方法各有优缺点。对于 Feathers 来说,一件普遍重要的事情是没有 session ,只有 JSON web tokens . JWT 是无状态的,可以被共享相同 secret 的任何服务器读取,因此不必有中央 session 存储。我能想到的两个主要选项是:

  1. 有一个主应用程序来处理授权和管理所有连接的客户端,但不是有与数据库对话的服务,而是连接到内部网络中单独的简单 API 服务器。这是更简单的设置,优点是内部 API 服务器可以非常简单并且根本不需要身份验证(因为允许主应用程序执行所有操作并将根据经过身份验证的用户限制进行查询)。缺点是主应用程序仍然是瓶颈(但负载减少,因为它基本上充当内部 API 的代理)。

Main server configuration

  1. 每个客户端都使用 JWT 连接到他们需要的每个 API 服务器。 JWT 由单独的身份验证(或用户)API 创建。这是更具可扩展性的解决方案,因为唯一的瓶颈是从公共(public)用户服务中检索最新的用户信息(这甚至可能并不总是必要的)。缺点是在客户端管理起来更复杂,并且必须在每个服务器上配置身份验证(至少对于 JWT)。然而,由于 JWT 的无状态性,不需要任何共享 session 。

Distributed services

关于node.js - 评估 FeatherJS 身份验证需求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41076627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com