什么是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);
    }
});
 

相关文章:

  • 2021-08-07
  • 2021-06-23
  • 2021-10-05
  • 2021-09-19
  • 2021-04-26
  • 2022-02-25
  • 2021-03-27
  • 2021-12-05
猜你喜欢
  • 2021-11-20
  • 2021-10-18
  • 2021-12-12
  • 2022-12-23
  • 2021-09-25
  • 2019-09-21
相关资源
相似解决方案