NinghaoNodeCamp 2019(第二回 7/15 - 7/30) 查看介绍立即报名 →

理解 Passport.js 里的策略与验证回调

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 的策略,它的作用就是验证根据用户名与密码验证用户。使用策略通过 passportuse 方法。

验证回调(Verify Callback)

使用 LocalStrategy 的时候给它提供了一个回调,这个回调叫 Verify Callback,验证回调。主要的作用就是去验证用户。Passport 验证一个请求,它会把请求里包含的凭证解析出来作为回调的参数,这里就是用户名与密码。

在验证回调里,可以去做一些验证。如果成功就执行 done ,并且带着验证成功的用户。

return done(null, user);

如果凭证无效,比如密码不对,那么 done 应该带着 false。

return done(null, false);

如果验证的时候出了一些问题,比如应用的数据库连不上了,应该把错误交给 done

return done(err);


微信好友

用微信扫描二维码,
加我好友。



微信公众号

用微信扫描二维码,
订阅宁皓网公众号。



240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

10580
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点