评估 FeatherJS 身份验证需求

2023-12-02

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

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

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

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

Thanks!


分割服务的方法有多种,每种方法都有各自的优点和缺点。对于 Feathers 来说,一件普遍重要的事情是没有会议,只有JSON 网络令牌。 JWT 是无状态的,可以被共享相同秘密的任何服务器读取,因此不必有中央会话存储。我能想到的两个主要选择是:

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

Main server configuration

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

Distributed services

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

评估 FeatherJS 身份验证需求 的相关文章

  • Visual Studio 代码断点在使用 TypeScript 的 Node.js 上不起作用

    我尝试了很多解决方案 但没有人适合我 代码执行 但我无法放置断点并调试它 请你帮助我好吗 我尝试过以下 VSCode 配置脚本 type node request launch name Typescript Node JS program
  • 如何从任何进程关闭 Windows 上的套接字(ipv4 和 ipv6)连接?

    如何在 Windows 上关闭 tcp v4 和 tcp v6 连接 我不想终止具有开放连接的整个进程 因为这显然会将其他人踢出该进程 我需要从一个单独的进程执行此操作 因此无法访问套接字句柄等 我正在使用 Windows API 来获取
  • 如何检测和测量 Node.js 中的事件循环阻塞?

    我想监视 node js 中事件循环每次运行需要多长时间 但是我不确定衡量这一点的最佳方法 我能想到的最好的方法是这样的 var interval 500 var interval setInterval function var last
  • 节点:使用 Nodemailer 的直通流

    我正在使用officegen 生成一个Word 文档 然后计划使用Nodemailer 和Sendgrid 将其附加到电子邮件中 Officegen 输出一个流 但我更愿意将其直接传递到附件 而不是在本地保存 Word 文档然后附加它 Ge
  • 有人在node/socket.io 中成功实现了动态命名空间吗?

    含义 用户对应用程序进行身份验证 gt 应用程序设置socket io连接的命名空间 http www socketioserver com NAMESPACE 并且节点服务器相应地响应无需针对特定名称空间进行硬编码 到那个特定的命名空间
  • nodejs mocha suite 未定义错误

    我正在尝试使用摩卡运行一些测试 但似乎无法克服这个错误 E tdd nodejs cart gt mocha cart test js node js 201 throw e process nextTick error or err Re
  • Nextjs 无法在生产环境中的“.next”目录中找到有效的构建

    我正在 docker 中运行我的应用程序 但我的生产构建和启动脚本仅在 docker 环境中失败 虽然node env开发在docker环境下运行良好 这是我的脚本 无法进行生产构建并启动服务器 我正在使用nodemon和babel bui
  • JITSU 无法安装 OSX [节点 0.8.17 和 NPM 1.2.0] WTF

    我在通过 NPM 安装 jitsu 时遇到问题 我在 mac osx 10 6 8 上安装了节点 0 8 17 和 NPM 1 2 0 当我跑步时 sudo npm install jitsu g 首先它警告未找到自述文件 npm WARN
  • S3.getSignedUrl 接受多种内容类型

    我正在使用react s3 uploader节点包 它接受一个signingUrl用于获取用于将对象存储到 S3 中的signedUrl 目前 我已经配置了一个 lambda 函数 带有 API 网关端点 来生成此signedUrl 经过一
  • 如何使用 Playwright 使用选择器查找框架 (iframe)

    我有一个小问题 无法找到使用 Microsoft Playwright 框架的答案 根据您可以使用以下代码获取 iframe const frame page frame frame login 但是如何使用选择器来查找 iframe 并与
  • 使用 AWS CDK 为 lambda 指定自定义角色

    我意识到它很新 但我没有看到任何语言的任何示例 说明如何为使用 AWS CDK 创建的 lambda 指定角色 我正在尝试这样做 const cdk require aws cdk cdk const lambda require aws
  • 为 Node.js 客户端应用程序保留 Firebase 用户

    我正在使用 Firebase 构建 Node js 命令行界面 CLI 用于与后端进行身份验证 我想避免让用户每次运行命令时都输入密码 相反 我想实现一个 登录 流程 将凭证保留到文件系统 该凭证可用于后续的无密码身份验证 直到用户 注销
  • 为什么此 HTTP 请求在 AWS Lambda 上不起作用?

    我正在开始使用 AWS Lambda 并尝试从我的处理程序函数请求外部服务 根据这个答案 https stackoverflow com a 27932216 473467 HTTP 请求应该可以正常工作 而且我还没有找到任何其他说明的文档
  • 从 Nodejs 提供二进制/缓冲区/base64 数据

    我在从节点提供二进制数据时遇到问题 我开发了一个名为的节点模块节点说话它执行 TTS 文本到语音 并返回 Base64 编码的音频文件 到目前为止 我这样做是为了转换base64到缓冲区 二进制文件 然后提供它 var src Base64
  • 对卡在 CLOSE_WAIT 状态的连接进行故障排除

    我有一个在 Windows 上的 WebLogic 11g 中运行的 Java 应用程序 几天后它变得没有响应 我注意到的一个可疑症状是大量连接 大约 3000 个 出现在netstat即使服务器空闲 也具有 CLOSE WAIT 状态 由
  • 如何使用javascript将大图像转换为十六进制?

    如果我尝试将图像转换为十六进制 无论我使用哪个函数 我都会收到此错误消息 该图像的大小为 7 MB 19812 毫秒 清理 1401 2 1455 0 gt 1401 2 1455 0 MB 9 9 0 ms 自上次 GC 以来 8 3 m
  • 如何针对 Node.js 中发生的每个错误发送电子邮件?

    假设我的 node js 应用程序正在运行 如果出现错误 我的意思是所有错误 不仅仅是网络错误 如果出现错误 则很重要 我如何调用函数向我发送电子邮件 基本上 在我希望它写入 err out 之前 我希望向我发送一封电子邮件 我正在使用no
  • 在打字稿中导入 json

    我是 typescript 的新手 在我的项目中 我们使用 typescript2 在我的要求之一中 我需要导入 json 文件 所以我创建了 d ts 文件如下 test d ts declare module json const va
  • Android 套接字和 asynctask

    我即将开始制作一个应该充当 tcp 聊天客户端的应用程序 我一直在阅读和阅读 我得出的结论是最好 如果不需要 将我的套接字和异步任务中的阅读器 问题是我不确定从哪里开始 因为我是 Android 新手 这至少对我来说是一项艰巨的任务 但据我
  • 在 MySQL 中存储表情符号的编码问题:如何使用 Prisma ORM 在 NodeJS 中定义字符排序规则?

    亲爱的 Nodejs 专家和数据库专家 我们在 MySQL 数据库中存储表情符号和其他特殊字符时遇到问题 我们使用 Prisma 得到一个错误 这是我们使用的 ORM 参数无法从排序规则 utf8 general ci 转换为 utf8mb

随机推荐

  • 实体核心动态 LINQ LIKE 函数未找到[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在尝试使用 ZZZ 动态 LINQ 库在我的 net core 项目中使用他们网站上的示例 但我遇到了问题 使用他们自己的 JS 小提琴也会发生
  • 获取实时 Log4J 消息

    如何获取 log4j 在监控应用程序中所有 log4j 日志的中央类中正在写入的内容 Thanks 编辑 我希望我不必从日志文件中读取它 因为它会使用更多资源 您可以自己实现Appender并使用正常配置复制其上的所有日志 log4j ro
  • 使用 iconv 进行简单的 UTF8->UTF16 字符串转换

    我想编写一个函数将 UTF8 字符串转换为 UTF16 小端 问题是 iconv函数似乎没有让您提前知道需要多少字节来存储输出字符串 我的解决方案是从分配开始2 strlen utf8 然后运行iconv在循环中 增加该缓冲区的大小real
  • 随机运动pygame

    我正在尝试制作一个简单的生活模拟器 我需要 细胞 在屏幕上几乎随机移动 有一些规则 但问题是 一段时间后 它们往往会聚集在屏幕的左上角 我尝试改变很多事情 比如完全跳过规则并让它们完全随机移动 但它们仍然聚集在一起 我的代码中是否存在一些明
  • 使用jwplayer 6.11视频无法在ipad上播放

    我们使用 JW Player 6 11 来播放 mp4 和 flv 视频 但无法正常工作 ios7 iPhone 我该如何解决 iPad 的这个问题 function playvideo jwplayer mediaplayer setup
  • Android 上的 Snackbar 无需更改主题

    当我在 Android 上创建小吃栏时 出现以下错误 java lang IllegalStateException 您需要在此活动中使用 Theme AppCompat 主题 或后代 我不想将活动的主题更改为 AppCompat 有没有办
  • 从相对路径中的文件加载 C# 中的图片框图像

    我在 Windows 窗体解决方案中有一个图片框图像 用户从数据库中选择一个项目后 我想将图像加载到此图片框中 图像的文件名将来自数据库 并且所有图像必须存储在应用程序文件夹 Images 的子文件夹中 我不想在我的解决方案中包含所有这些
  • Android:如何查找屏幕的宽度和高度?

    我试图找到屏幕的宽度和高度 但我尝试过的方法都不适用于我创建的类 我的代码如下 有谁知道如何找到它 我无法使用下面尝试的方式 因为 getWidth 已被弃用 public class Crate public int acrossCrat
  • 在 LINQ 查询中的模型值中使用列表

    我正处于 ASP NET MVC 开发的非常基础的阶段 因此 有时我很难使用简单的 LINQ 查询来工作 设想 我有一个页面有一些Image并由用户对该图像发表评论 就像 Facebook 上包含用户评论的帖子一样 因此 我从文本区域保存这
  • git merge squash - 当我想要的只是我压扁的分支的更改时冲突解决

    I have github当主分支达到某种可接受的状态时 我将其推送到 github 的分支 已经这样做过一次 为此我做了 MrD MRSD c Dropbox eclipse workspaces android AndroidMonit
  • 为 C++ 指针集定义运算符<

    我正在尝试编写 C STL 集 它保留指向我的自定义类的指针 但我不明白当我使用指针而不是类的对象时如何重载 我读到 如果我们重载 set 用于比较的 当您使用operator 函数创建一个结构并将其传递给集合时 我遇到了这个技巧 例如se
  • Tensorflowpartial_run()“在执行部分运行之前必须运行‘setup’!”尽管已被设立

    我正在使用tensorflow的partial run 方法围绕运行子图构建概念验证 而无需重新计算 目前我有一个简单的小 python 脚本 见下文 它应该将两个占位符值相乘并加 1 作为部分图运行 此操作有效一次 然后失败并出现错误 t
  • 如何分析 goroutine 的数量

    基本上我想知道我的程序是否随着时间的推移而泄漏 goroutine 所以 我想看看随着时间的推移有多少 goroutine 正在运行 有什么办法可以通过pprof 我已经搞定了go tool pprof http localhost 888
  • 如何在 docker 容器上设置 ulimit / 文件描述符 镜像标签为 phusion/baseimage-docker

    我需要在 docker 容器上正确设置文件描述符限制 我使用 ssh 连接到容器 https github com phusion baseimage docker 已经尝试过 编辑limits conf容器忽略这个文件 新贵程序位于htt
  • 如何在空手道框架中编辑配置的标头

    在我的框架中 我有 headers js 文件 我使用命令在每个功能文件的背景上调用该 js 文件 configure headers read headers js 这按预期工作 某些情况下我需要更改 client id 值 例如 hea
  • SSLHandshakeException:收到致命警报:Java 6 -> 8 升级后握手失败

    我们最近将一个项目从 Java 6 更新到了 Java 8 现在我们在 SSL 握手方面遇到了障碍 服务层使用客户端请求和接收来自第三方应用程序的调用 在服务层 密钥库初始化为 System setProperty javax net ss
  • 从数据库中写入和读取最新(按日期)的行

    我对下面的代码有三个问题 基本上我正在尝试以 currentdate count 格式写入行 继续将行日期附加到同一个 csv 文件中 读取最近的 5 个条目并打印它 目前我尝试了以下操作并遇到以下错误 1 如何以当前日期格式写入一行 计数
  • Android 上的 Proguard 与 OrmLite

    我应该如何在 Android 上将 proguard 与 ormlite 库一起使用 尝试这个 keep class com j256 keepclassmembers class com j256 keep enum com j256 k
  • 第 n 个子元素选择错误的元素

    对于这个特定的站点 当我通过 CSS 或 jQuery 使用 nth child 时 nth child 选择器捕获了错误的元素 我在调用的选择器之前有一个孩子 home article nth child 3 captures 2nd c
  • 评估 FeatherJS 身份验证需求

    我和我的同事想构建一个聊天应用程序 ReactJS NodeJS 我们一直在寻找最好的框架来实现这一点 FeathersJS 似乎无疑是最稳定且功能丰富的 socket io 包装器 然而 由于我们希望允许我们的应用程序扩展 因此我们决定将