首页 > 解决方案 > 使用 Postgresql 的 Passport js 本地策略不起作用

问题描述

嗨,我再次发帖希望有人可以帮助我,这是我的问题,我正在使用 MVC 架构,所以我现在有 3 个文件夹控制器、模型和视图,我现在关注的是服务器部分,我想完成这项工作,但我不知道出了什么问题,我该怎么办,请帮忙。在我的模型中,我有

 const findUserByEmail = (email) => {
return new Promise((resolve, reject) => {
  try {    
    console.log("jqhhbsd"),
      con.query(
          ' SELECT * FROM `personne_physique` WHERE `email` = $1  ', email,
          function(err, rows) {
              if (err) {
                  reject(err)
              }
              let user = rows[0];
              resolve(user);
          }
      );
  } catch (err) {
      reject(err);
    }
 });
};

const comparePassword = (mot_de_passe, userObject) => {
  return new Promise(async (resolve, reject) => {
  try {
      await bcrypt.compare(mot_de_passe, userObject.mot_de_passe).then((isMatch) => {
          if (isMatch) {
              resolve(true);
          } else {
              resolve(`The password that you've entered is incorrect`);
          }
      });
  } catch (e) {
      reject(e);
     }
 });
};

这是我的控制器,我使用这些需要 const user= require("../models")

常量护照=要求(“护照”);const LocalStrategy = require("passport-local").Strategy;

  initializePassport : () => {
  passport.use(new LocalStrategy({
        usernameField: 'email',
        passwordField: 'mot_de_passe',
        passReqToCallback: true

    },
    
    async (req, email, mot_de_passe, done) => {
        try {
            await user.findUserByEmail(email).then(async (user) => {
                if (!user) {
                    return done(null, false, req.flash("errors", `This user email "${email}" doesn't exist`));
                }
                if (user) {
                    let match = await user.comparePassword(mot_de_passe, user);
                    if (match === true) {
                        return done(null, user, null)
                    } else {
                        return done(null, false, req.flash("errors", match)
                        )
                    }
                }
            });
        } catch (err) {
            console.log(err);
            return done(null, false, { message: err });
        }
    }));

  }

最后这是我的路线

 router.post('/login', passport.authenticate('local', {
failureRedirect: '/users/login',

 }),
function(req, res) {
console.log('Authentication successful');
res.redirect('/login');
 });

我也收到这条消息运行邮递员“消息”:“未知身份验证策略“本地””。

请如果您有任何想法可以帮助我与我分享。

标签: node.jspostgresqlexpresspassport.js

解决方案


推荐阅读