当前位置: 首页 > 面试题库 >

Everyauth与Passport.js?

西门飞星
2023-03-14
问题内容

Everyauth和Passport.js似乎具有非常相似的功能集。两者之间有哪些正面和负面的比较,这些让我想要使用一个比较另一个?


问题答案:

作为Passport的开发人员,花了我两分钱。

在开发Passport之前,我评估了Everyauth并确定它不符合我的要求。因此,我着手实施一个不同的解决方案。我要解决的主要问题是:

惯用Node.js

Everyauth广泛使用了Promise,而不是Node使用回调和闭包的方法。承诺是异步编程的另一种方法。虽然在某些高级情况下很有用,但我对将身份验证库强制应用到我的应用程序上并不满意。

此外,我发现正确使用回调和闭包会产生简洁,结构良好(几乎功能样式)的代码。Node本身的大部分功能都来自这一事实,Passport也照此进行。

模块化的

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

对于基本说明,请比较running $ npm install passport和的区别$ npm install everyauth。Passport使您可以仅使用实际需要的依赖项来编写应用程序。

这种模块化体系结构已证明自身具有适应性,可以促进社区实现对各种身份验证机制的支持,包括OpenID,OAuth,BrowserID,SAML等。

灵活

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

这意味着您 不会感到意外
,因为您定义了要在哪里路由以及何时使用身份验证。也没有对特定框架的依赖。人们已经成功地将Passport与其他框架(例如Flatiron)一起使用

相反,everyauth中的任何模块都可以将路由插入到您的应用程序中。这会增加调试难度,因为不清楚如何分配路由并导致与特定框架的紧密耦合。

Passport还以完全传统的方式出错,仅次于Express定义的错误处理中间件。

相比之下,每个验证人都有自己的约定,这些约定不太适合问题空间,从而导致长期存在的开放性问题,例如#36

API认证

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

在这一点上,我不会详细说明。但是,我鼓励人们研究Passport的同级项目OAuthorize和OAuth2orize。使用这些项目,您可以为基于HTML
/会话的Web应用程序和API客户端实施“全栈”身份验证。

可靠

最后,身份验证是应用程序的重要组成部分,您想完全依赖于它。每个验证人都有很多问题,但随着时间的流逝,其中许多问题仍然存在。在我看来,这是由于单元测试覆盖率低而导致的,这本身表明在每个认证中的内部接口均未适当定义。

相反,Passport的界面及其策略是定义明确的,并且被单元测试广泛涵盖。
针对Passport提出的问题通常主要是次要功能请求,而不是与身份验证有关的错误。

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



 类似资料:
  • Everyauth 可以为 node.js Connect 和 Express 应用提供认证和授权。 模块化 - 目前已经提供 Facebook,Twitter,OAuth 登陆,基本用户名密码登陆,更多模块还在开发中。 容易配置 - Everyauth 在创建的时候就考虑了强大的配置。Everyauth 的配置是很直接的,易于阅读,易于编写,符合思考逻辑的。   Authenticate Via

  • 问题内容: 任何人都可以在以下位置进行很好的比较:https : //github.com/ciaranj/connect-auth 和https://github.com/bnoguchi/everyauth 似乎是表达 / 连接的唯一选择 问题答案: 这两个库的功能集都非常接近,特别是在支持的提供程序方面。提供开箱即用的支持以创建您自己的oAuth提供程序,因此如果您需要这种支持,那么可以很好

  • 问题内容: 我正在使用node.js + express.js + everyauth.js。我已经将所有我的Everyauth逻辑移到了模块文件中 在其中,我使用密钥/秘密组合加载我的oAuth配置文件: 这些代码对于不同的环境是不同的-开发/登台/生产,因为回调是针对不同的URL的。 曲 如何在环境配置中设置它们以过滤所有模块,或者可以将路径直接传递到模块中? 在环境中设置: 传递 ?希望有道

  • 在C语言中,假设每个算法被赋予完全相同的一组进程,那么先到先得、最短作业优先和循环之间的周转时间是否相等?还是调度算法不同?

  • 问题内容: 为了为 HTML5 Doctype 定义字符集,我应该使用哪种表示法? 短: 长: 问题答案: 在HTML5中,它们是等效的。使用较短的一个,更容易记住和键入。浏览器支持很好,因为它是为向后兼容而设计的。

  • 连接的多个输入都相当于Yes的时候才会输出Yes。 用法 Your browser does not support the video tag. 案例:小闹钟 功能:今天15:10:00,响起猫叫声小闹钟 工作原理 当所有的输入都是Yes的时候,与节点才输出Yes。