帆+护照+基本认证

时间:2016-07-14 12:25:45

标签: javascript sails.js basic-authentication passport.js

在护照js,基本策略中,以下代码示例提供了验证用户身份的功能。

passport.use(new BasicStrategy(
  function(userid, password, done) {
    User.findOne({ username: userid }, function (err, user) {
      if (err) { return done(err); }
      if (!user) { return done(null, false); }
      if (!user.verifyPassword(password)) { return done(null, false); }
      return done(null, user);
    });
  }
));

问题是Sails应用程序中的哪个(哪个文件)应该放置此代码?我想同样适用于自定义验证功能吗?

1 个答案:

答案 0 :(得分:0)

  1. 在控制器目录下创建AuthController
  2. 然后编写代码以使护照处理登录过程

    login: function(req, res) {
    
    passport.authenticate('local', function(err, user, info) {
        if ((err) || (!user)) {
            return res.send({
                message: info.message,
                user: user
            });
        }
        req.logIn(user, function(err) {
            if (err) res.send(err);
            return res.send({
                message: info.message,
                user: user
            });
        });
    
    })(req, res);
    
  3. 此行passport.authenticate('local'将从config.js中的passport.js读取配置,如下所示: -

    passport.use(new LocalStrategy({     usernameField:' email',     passwordField:'密码'   },   功能(电子邮件,密码,完成){

    User.findOne({ email: email }, function (err, user) {
      if (err) { return done(err); }
      if (!user) {
        return done(null, false, { message: 'Incorrect email.' });
      }
    
      bcrypt.compare(password, user.password, function (err, res) {
          if (!res)
            return done(null, false, {
              message: 'Invalid Password'
            });
          var returnUser = {
            email: user.email,
            createdAt: user.createdAt,
            id: user.id
          };
          return done(null, returnUser, {
            message: 'Logged In Successfully'
          });
        });
    });
    
  4. 将这些行添加到route.js中: - 'post /login': 'AuthController.login'