Everyauth vs Passport.js?

Ehe*_*Tov 120 connect node.js everyauth passport.js

EveryauthPassport.js似乎有非常相似的功能集.两者之间的一些积极和消极的比较是什么让我想要使用一个而不是另一个?

Jar*_*son 188

作为Passport的开发者,我用两美分购买.

在开发Passport之前,我评估了everyauth,并确定它不符合我的要求.所以,我开始着手实施一个不同的解决方案.我想要解决的主要问题是:

Idiomatic Node.js

everyauth广泛使用promises,而不是Node的使用回调和闭包的方法.Promise是异步编程的另一种方法.虽然在某些高级情况下很有用,但我对我的应用程序强制执行此选择的身份验证库感到不舒服.

此外,我发现正确使用回调和闭包可以产生简洁,结构良好(几乎是功能样式)的代码.Node本身的大部分功能来自于这一事实,而Passport也是如此.

模块化

Passport采用策略设计模式来定义核心模块与各种认证机制之间关注点的明确分离.这有许多好处,包括较小的整体代码大小以及定义良好且可测试的接口.

有关基本说明,请比较运行$ npm install passport和运行之间的差异$ npm install everyauth.Passport允许您仅使用实际需要的依赖项来创建应用程序.

这种模块化架构已经证明自身具有适应性,促进了一个社区已经实现了对各种身份验证机制的支持,包括OpenID,OAuth,BrowserID,SAML等.

灵活

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

这意味着没有任何意外,因为您可以定义路径的位置以及何时使用身份验证.特定框架也没有依赖关系.人们成功地将Passport与其他框架(如Flatiron)一起使用

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

Passport也是一种完全传统的错误,接下来是Express定义的错误处理中间件.

相比之下,Everyauth有自己的约定,这些约定不适合问题空间,导致长期存在的问题,如#36

API身份验证

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

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

可靠

最后,身份验证是应用程序的关键组件,您希望完全依赖它.Everyauth有很多问题,其中许多问题随着时间的推移而不断开放和重新出现.在我看来,这是由于单元测试覆盖率低,这本身表明每个内部接口都没有适当定义.

相比之下,Passport的接口及其策略定义明确,并且单元测试广泛涵盖. 针对Passport提出的问题往往主要是次要功能请求,而不是与身份验证相关的错误.

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

  • @EhevuTov>选择这个答案,它比我的完整得多,我同意100%的观察. (9认同)
  • 我不知道承诺如何真正改变香草回调风格的引用好处.在一系列线性事件触发额外回调的情况下,您使用较少的代码执行同样的操作. (4认同)

Way*_*inn 18

护照

  • 模块化和透明
  • 好文档
  • 社区贡献(由于它的模块化)
  • 适合每个人和他们的狗(再次,由于它的模块化)

Everyauth

  • 发展历史悠久,成熟.
  • 不再保持
  • 伟大的文档
  • 适用于广泛的服务

  • Everyauth 不再被积极维护。 (2认同)
  • 请注意,护照似乎也不再被维护。最后一次功能提交是在 2 年前进行的,有 300 个未解决的问题。 (2认同)

Gud*_*son 16

刚完成从Everyauth到护照的转换.原因如下.

  1. Everyauth不够稳定.最后一个问题是上周我被一个神秘的问题所困扰,其中facebook身份验证可以在local.host和生产环境中运行,但不是在myoku的测试环境中,即使使用相同的代码和数据库以及新的heroku应用程序实例.那时我没有关于如何隔离问题的理论,因此删除Everyauth是合乎逻辑的下一步.
  2. 它使用用户名/密码凭据提供标准身份验证支持的方式不容易与单页面Web应用程序方法集成.
  3. 我无法让Everyauth使用Google帐户.
  4. 每个人的积极发展似乎都在下降.

该港口令人惊讶地无痛,只需要几个小时,包括手动测试.

显然,我建议去护照.


Pau*_*aul 5

我首先尝试了 Everyauth,然后又去了 Passport。它让我觉得更加灵活,尤其是。如果(例如)我需要为不同的提供者提供不同的逻辑。它还可以更轻松地 (imo) 配置自定义身份验证策略。另一方面,它没有视图助手,如果它们对你很重要的话。