概述

2018-02-24 15:46 更新

passport.js是Nodejs中的一个做登录验证的中间件,极其灵活和模块化,并且可与Express、Sails等Web框架无缝集成。Passport功能单一,即只能做登录验证,但非常强大,支持本地账号验证和第三方账号登录验证(OAuth和OpenID等),支持大多数Web网站和服务。

策略(Strategy)

策略是passport中最重要的概念。passport模块本身不能做认证,所有的认证方法都以策略模式封装为插件,需要某种认证时将其添加到package.json即可。

策略模式是一种设计模式,它将算法和对象分离开来,通过加载不同的算法来实现不同的行为,适用于相关类的成员相同但行为不同的场景,比如在passport中,认证所需的字段都是用户名、邮箱、密码等,但认证方法是不同的。关于策略模式,本文不详细展开,想了解的推荐阅读Javascript中的策略模式,或者更广泛意义上的策略模式

依据策略模式,passport支持了众多的验证方案,包括Basic、Digest、OAuth(1.0,和2.0的三种实现)、Bearer等。

passport和everyauth

Nodejs中做登录验证的有不少,我听说过的有connect-auth、everyauth、passport,以及Mongoose的插件mongoose-auth。

其中passport和everyauth用的比较多。

everyauth也是基于策略模式,但支持的第三方网站和服务比passport要少些。另外everyauth还涉及到view/route和database,耦合程度比passport高,而passport则更专注。

值得一提的是,passport的作者声称正因为他看到everyauth不能满足他的一些需求所以创建了passport,不过貌似现在everyauth改进了其中的部分缺陷;everyauth的作者则声称它的建立是基于connect-auth的不足上的。

另外这里有讲到选择适合的Node.js授权认证策略,也讲到了两者的一些不同。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号