Passport.js 里面使用一种叫策略(Strategy)的东西验证用户的身份,在应用里我们可以选择使用不同的策略验证用户的身份。比如用户名与密码,JWT,oAuth,OpenID 等等。使用策略的时候需要配置一下。
下面是 LocalStrategy(用户名/密码) 的用法:
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
passport.use(new LocalStrategy(
(username, password, done) => {
User.findOne({ username: username }, (err, user) => {
if (err) {
return done(err);
}
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!user.validPassword(password)) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, user);
});
}
));在上面的例子里用了一种叫 LocalStrategy 的策略,它的作用就是验证根据用户名与密码验证用户。使用策略通过 passport 的 use 方法。
验证回调(Verify Callback)
使用 LocalStrategy 的时候给它提供了一个回调,这个回调叫 Verify Callback,验证回调。主要的作用就是去验证用户。Passport 验证一个请求,它会把请求里包含的凭证解析出来作为回调的参数,这里就是用户名与密码。
在验证回调里,可以去做一些验证。如果成功就执行 done ,并且带着验证成功的用户。
return done(null, user);
如果凭证无效,比如密码不对,那么 done 应该带着 false。
return done(null, false);
如果验证的时候出了一些问题,比如应用的数据库连不上了,应该把错误交给 done 。
return done(err);



