gpt4 book ai didi

node.js - Everyauth vs Passport.js?

转载 作者:IT老高 更新时间:2023-10-28 21:46:49 24 4
gpt4 key购买 nike

EveryauthPassport.js似乎有非常相似的功能集。两者之间有哪些正面和负面的比较让我想使用其中的一个?

最佳答案

作为 Passport 的开发者,我的两分钱值得一提。 .

在开发 Passport 之前,我评估了everyauth 并确定它不符合我的要求。所以,我着手实现一个不同的解决方案。我想强调的主要观点是:

惯用的 Node.js

everyauth 广泛使用 Promise,而不是 Node 使用回调和闭包的方法。 Promise 是异步编程的另一种方法。虽然在某些高级情况下很有用,但我不喜欢身份验证库将这种选择强加于我的应用程序。

此外,我发现正确使用回调和闭包会产生简洁、架构良好(几乎是函数式风格)的代码。 Node 本身的大部分力量都来自这一事实,Passport 也效仿。

模块化

Passport 采用一种策略设计模式来定义核心模块和各种身份验证机制之间的关注点的清晰分离。这有很多好处,包括更小的整体代码大小以及定义良好且可测试的接口(interface)。

作为基本说明,比较运行 $ npm install passport$ npm install everyauth 之间的区别。 Passport 允许您仅使用您实际需要的依赖项来制作您的应用程序。

这种模块化架构已证明自己具有适应性,有助于实现对各种身份验证机制(包括 OpenID、OAuth、BrowserID、SAML 等)的支持的社区。

灵活

Passport 只是中间件,使用 Connect 和 Express 建立的 fn(req, res, next) 约定。

这意味着没有意外,因为您可以定义您想要路由的位置以及何时要使用身份验证。也不依赖于特定的框架。人们成功地将 Passport 与其他框架一起使用,例如 Flatiron

相比之下,everyauth 中的任何模块都可以将路由插入到您的应用程序中。这可能会使调试变得困难,因为如何调度路由并导致与特定框架的紧密耦合并不明显。

Passport 也以一种完全传统的方式出错,接下来是 error-handling Express 定义的中间件。

相比之下,everyauth 都有自己的约定,不能很好地适应问题空间,从而导致长期存在的开放问题,例如 #36

API 认证

任何身份验证库的最高成就是它能够像处理基于 Web 的登录一样优雅地处理 API 身份验证。

我不会详细说明这一点。但是,我鼓励人们研究 Passport 的兄弟项目,OAuthorizeOAuth2orize .使用这些项目,您可以为基于 HTML/ session 的 Web 应用程序和 API 客户端实现“全栈”身份验证。

可靠

最后,身份验证是应用程序的关键组件,您希望完全放心地依赖它。 everyauth 有一长串 issues其中许多仍然开放并随着时间的推移重新浮出水面。在我看来,这是由于单元测试覆盖率低,这本身表明everyauth 中的内部接口(interface)没有适当定义。

相比之下,Passport 的接口(interface)及其策略定义良好,并且被单元测试广泛覆盖。 Issues针对 Passport 提出的申请大多是次要功能请求,而不是与身份验证相关的错误。

尽管是一个年轻的项目,但这种质量水平表明更成熟的解决方案更容易维护和信任。

关于node.js - Everyauth vs Passport.js?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11974947/

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