Passport本地策略注册成功但不重定向

时间:2018-01-16 16:40:00

标签: node.js promise passport.js passport-local

我使用promises实现了自定义本地策略,但即使在数据库中创建了新用户,该函数也不会重定向。

这是我的数据库处理程序:

std::vector<vector<int>> someVec;
someVec.resize( n , std::vector<int>(3));

这是控制器:

export function saveUser(email, password) {
  return new Promise((resolve, reject) => {
    database
      .select('*')
      .from('user')
      .where({ email })
      .then(results => {
        const user = results[0];
        if (user) {
          console.log('found matching username');
          return reject(new Error('Email already taken'));
        } else {
          bcrypt
          .hash(password, SALT_ROUNDS)
          .then(hash => {
            // TODO: Require more information on initial signup?
            const newUser = {
              email,
              date_of_birth: new Date(),
              first_name: 'First',
              last_name: 'Last',
              phone_number: '45555555',
              hashed_password: hash,
            };
            database
            .insert(newUser, 'id')
            .into('user')
            .then(id => {
              newUser.id = id[0];
              console.log('new user successfully created');
              return resolve(null, newUser);
            })
            .catch(error => {
              console.log('database insertion error', error);
              return reject(error);
            });
          })
          .catch(error => {
            console.log('hashing error', error);
            return reject(error);
          });
        }
      })
      .catch(error => {
        console.log('database email search error', error);
        reject(error);
      });
  });
}

处理注册的路由:

passport.use(
  'local-signup',
  new LocalStrategy(
    {
      usernameField: 'email',
      passwordField: 'password',
      passReqToCallback: true,
    },
    (req, email, password, done) => {
      saveUser(email, password)
        .then(user => done(null, user))
        .catch(error => done(null, false, error));
    },
  ),
);

当我使用Postman测试API时,成功创建了一个新用户并且成功创建了新用户&#34;打印出来,但用户仍然被重定向到failureRedirect路线。

你能发现我的错误吗?

1 个答案:

答案 0 :(得分:0)

简单的复制粘贴拼写错误:

return resolve(null, newUser); =&gt; return resolve(newUser);