Express中使用passport快速完成身份验证

1. passport介绍

Passport项目是一个基于Nodejs的认证中间件。Passport目的只是为了“登陆认证”,因此,代码干净,易维护,可以方便地集成到其他的应用中。

Web应用一般有2种登陆认证的形式,这些都是passport支持哒!

  • 用户名和密码认证登陆
  • OAuth认证登陆

Passport可以根据应用程序的特点,配置不同的认证机制。本文将介绍,用户名和密码的认证登陆。

项目网站:http://passportjs.org/

本文主要讲解使用passport完成Basic Auth身份认证方法,并应用于Express构建的Restful API上(如果你早些年用过FTP的话,一定对 ftp://user:pass@xxx.com这种方式不陌生,对,就是这种认证!)

2.安装

passport有200多种认证方案组成,我们这里用的Basic Auth,需要安装passport-http以及passport

3、使用

新建一个auth.js,可以看出,核心逻辑在于判断username和传入的是否一致,若验证成功回调done(null, true),否则为done(null, false)

然后在app.js中,引入:

4、测试

curl -u admin:admin 127.0.0.1:3333/api/status

如果密码不符,就会提示401 Unauthroized。如果成功,就能直接访问页面啦。

5、后记

如果大家拿抓包软件仔细看一下,可以发现Basic Auth实际非常不安全,在每次请求API的时候,都会发送用户名和密码,所以在实际应用中,我们可以用OAuth等基于Token的方案。感兴趣的大家可以自行参考passport的文档。

 

Leave a Reply

Your email address will not be published.