【问题标题】:Sails + passport + Basic Authentication帆+护照+基本认证
【发布时间】:2016-07-14 12:25:44
【问题描述】:

在passport 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 应用程序中的哪个位置(哪个文件)?我想这同样适用于自定义验证功能?

【问题讨论】:

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


    【解决方案1】:
    1. 在controllers目录下创建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({ 用户名字段:'电子邮件', 密码字段:'密码' }, 功能(电子邮件,密码,完成){

      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'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-09
      • 1970-01-01
      • 1970-01-01
      • 2022-08-05
      • 2016-10-12
      • 2015-09-23
      • 2019-03-01
      • 1970-01-01
      相关资源
      最近更新 更多