Node.js 模块之【passport】

什么是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);
    }
});
 
posted @ 2018-11-22 10:51  王文帅  阅读(4234)  评论(0编辑  收藏  举报