passport验证用户登录
最近学习用nodejs+express+session实现用户登录,绕不开使用passport,系统记录一下学习和实践过程
1. Passport简介
passport.js是Nodejs中的一个做登录验证的中间件,极其灵活和模块化,并且可与Express、Sails等Web框架无缝集成。passport模块本身不能做认证,所有的认证方法都以策略模式封装为插件,需要某种认证时将其添加到package.json即可。
2. Passport策略
passport功能单一,只做authenticate, 但是认证方式多种多样,具体如何认证,passport采用了策略模式把具体的实现留给了具体的strategies; 比如passport-local.
策略模式是一种设计模式,它将算法和对象分离开来,通过加载不同的算法来实现不同的行为,适用于相关类的成员相同但行为不同的场景,比如在passport中,认证所需的字段都是用户名、邮箱、密码等,但认证方法是不同的。
3. Passport环境依赖
Passport用于用户验证,需要Nodejs+express以及相应的数据库,同时需要cookie-parse用于cookie解析,以及session和express-session用于写入和解析session。可选的,connect-flash消息提示中心件。
4. Passport安装
npm install passport --save
npm install passport-local --save
5. Passport配置和策略定义
下列代码写在总配置文件app.js中
var express = require('express');
var cookieParser = require('cookie-parser');
var passport = require('passport');
var session = require('express-session');
var flash = require('connect-flash');
...
app.use(cookieParser());
app.use(session({
secret: 'assetManagement',
cookie: {
maxAge: 12*60*60*1000}, //定义session失效时间
rolling: true,
resave: true,
saveUninitialized: false
})