Ehe*_*Tov 120 connect node.js everyauth passport.js
Everyauth和Passport.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的兄弟项目,即OAuthorize和OAuth2orize.使用这些项目,您可以为基于HTML /会话的Web应用程序和API客户端实现"全栈"身份验证.
可靠
最后,身份验证是应用程序的关键组件,您希望完全依赖它.Everyauth有很多问题,其中许多问题随着时间的推移而不断开放和重新出现.在我看来,这是由于单元测试覆盖率低,这本身表明每个内部接口都没有适当定义.
相比之下,Passport的接口及其策略定义明确,并且单元测试广泛涵盖. 针对Passport提出的问题往往主要是次要功能请求,而不是与身份验证相关的错误.
尽管是一个年轻的项目,但这种质量水平表明了一种更成熟的解决方案,更容易维护和信任.
Way*_*inn 18
Gud*_*son 16
刚完成从Everyauth到护照的转换.原因如下.
该港口令人惊讶地无痛,只需要几个小时,包括手动测试.
显然,我建议去护照.
我首先尝试了 Everyauth,然后又去了 Passport。它让我觉得更加灵活,尤其是。如果(例如)我需要为不同的提供者提供不同的逻辑。它还可以更轻松地 (imo) 配置自定义身份验证策略。另一方面,它没有视图助手,如果它们对你很重要的话。
| 归档时间: |
|
| 查看次数: |
39582 次 |
| 最近记录: |