Everyauth诉Passport.js?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (24)

Everyauth和Passport.js似乎有非常相似的特征集。

在这两者之间有哪些积极和消极的比较,使我想用一个而另一个呢?

提问于
用户回答回答于

在开发Passport之前,我评估了所有的内容,并确定它不符合我的要求。因此,我着手实现另一种解决方案。我想谈的主要问题是:

惯用Node.js

每个人都广泛使用承诺,而不是Node使用回调和闭包的方法。许诺是异步编程的另一种方法。虽然在一些高级情况下很有用,但我不习惯于使用身份验证库将这种选择强加于我的应用程序。

此外,我发现适当地使用回调和闭包会产生简洁、良好的体系结构(几乎是功能风格)代码。Node本身的大部分力量来自于这一事实,Passport也是如此。

模块化

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

作为一个基本的说明,比较运行$ npm install passport$ npm install everyauth...。护照允许您只使用实际需要的依赖关系来制作应用程序。

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

柔韧

护照只是中间件,使用fn(req, res, next)由连接和快递公司建立的公约。

这意味着没有意外,当定义想要的路由位置以及何时使用身份验证时。也不存在对特定框架的依赖关系。

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

护照的错误也完全是传统的,其次是错误处理由Express定义的中间件。

API认证

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

使用这些项目,可以为基于HTML/会话的Web应用程序和API客户端实现“全堆栈”身份验证。

可靠

这是由于单元测试覆盖率低,这本身就意味着每个单元中的内部接口都没有被适当定义。

相反,Passport的接口和策略是定义良好的,并且被单元测试广泛地覆盖,针对Passport的归档通常是次要的特性请求,而不是与身份验证相关的bug。

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

用户回答回答于

Everyaueh

  • 发展历史较长,成熟。
  • 强大的文件
  • 积极维护
  • 服务范围广泛。

护照

  • 模块化透明
  • 良好文件
  • 社区贡献(由于其模块化)
  • 与每个人和他们的狗一起工作(同样,由于它的模块化)

扫码关注云+社区