什么是passport

passport是Nodejs的一个中间键,用于用户名和密码的验证登陆。在项目中我用它来验证后台用户名和密码,但passport更多用在第三方登录,功能强大。

安装与配置

本项目中使用了passport以及passport-local

npm install passport --save
npm install passport-local --save


中间件的配置

// 初始化调用passport
app.use(passport.initialize());
app.use(passport.session());

local本地验证

var passport = require('passport');
var Strategy = require('passport-local').Strategy;
var account = require('./account'); //创建本地策略
passport.use('local', new Strategy({
// 需要验证的字段名称
username: 'username',
password: 'password'
},
// 回调函数
function(username, password, cb) {
//验证不通过
if(username != account.username) {
return cb(null, false, {message: '用户名错误'});
}
if(password != account.password) {
return cb(null, false, {message: '密码错误'});
}
//验证通过,返回用户信息
return cb(null, account);
}
));


序列化与反序列化

//序列化,用户提交后会把id作为唯一标识储存在session中,同时存储在用户的cookie中
passport.serializeUser(function(account, cb) {
console.log('in serializeUser');
return cb(null, account.id);
}); //验证用户是否登录时需要用到这个,session根据id取回用户的登录信息并存储在req.user中
passport.deserializeUser(function(id, cb) {
console.log('in deserializeUser');
if(id == account.id) {
return cb(null, account);
} else {
return cb(err);
}
});
 

最新文章

  1. while(cin.eof)出错 poj
  2. python的类和对象——进阶篇
  3. Dreamweaver8 查找和替换窗口不见了解决办法
  4. Metronic 使用到的开源插件汇总
  5. using 名称空间指定一个别名
  6. Catalan数
  7. Codeforces Round #218 (Div. 2) C. Hamburgers
  8. Ffmpeg解析media容器过程/ ffmpeg 源代码简单分析 : av_read_frame()
  9. 使用pch预编译文件
  10. Why it is good practice to declare loggers private, static, and final?
  11. html中th 与thead tbody的 使用
  12. Log4Qt使用(三)在DailyRollingFileAppender类中增加属性mMaxBackupIndex
  13. spoj 375 QTREE - Query on a tree 树链剖分
  14. 电脑cmos是什么?和bois的区别?
  15. 给线程发送消息让它执行不同的处理(自己建立消息循环,非常有意思) good
  16. Bootstrap相关的网站
  17. Unity Android路径及注意事项
  18. PuTsangTo-单撸游戏开发03 碰撞与跳跃瑕疵版
  19. java中抽象类的定义和使用
  20. iOS学习——(转)多线程

热门文章

  1. 学习 27 门编程语言的长处,提升你的 Python 代码水平
  2. Java 在Word中嵌入多媒体(视频、音频)文件
  3. HGAME pwn ROP_LEVEL2
  4. [BUUCTF]PWN——[HarekazeCTF2019]baby_rop2
  5. Table.RowCount行列计数…Count(Power Query 之 M 语言)
  6. CSS中上下margin的传递和折叠
  7. PDF 补丁丁开放源代码
  8. c++11之获取模板函数的参数个数和函数返回值类型
  9. 【机器学*】k-*邻算法(kNN) 学*笔记
  10. 【LeetCode】617. Merge Two Binary Trees 解题报告