表达:Passport.js LocalStrategy

登录失败时,显示我的自定义flash错误消息(“用户名错误”或“密码错误”)时出现问题。

  • 如果我以表单的形式保留用户名或密码为空,则重定向到登录页面的操作正确完成,并显示默认的闪存错误消息“缺少凭据”。

  • 如果输入的用户名不正确或密码错误,则也可以正确重定向到登录页面,但不会显示任何消息。有人可以帮忙吗?

我的路线:

// GET request for signing a user in
router.get("/user/log-in",user_controller.user_log_in_get);

// POST request for logging a user in
router.post("/user/log-in",user_controller.user_log_in_post);

我的控制器:

exports.user_log_in_get = function(req,res,next) {
  res.render("log_in_form",{ title: "Log in",messages: req.flash("error") });
};

exports.user_log_in_post = passport.authenticate("local",{
  successRedirect: "/",failureRedirect: "/clubhouse/user/log-in",failureflash: true
});

使用护照:

passport.use(
  new LocalStrategy((username,password,done) => {
    User.findOne({ username: username },(err,user) => {
      if (err) return done(err);
      if (!user) {
        return done(null,false,{ error: "Incorrect username" });
      }
      bcrypt.compare(password,user.password,res) => {
        if (res) {
          // passwords match! log user in
          return done(null,user);
        } else {
          // passwords do not match!
          return done(null,{ error: "Incorrect password" });
        }
      });
      return done(null,user);
    });
  })
);

passport.serializeuser(function(user,done) {
  done(null,user.id);
});

passport.deserializeuser(function(id,done) {
  User.findById(id,function(err,user) {
    done(err,user);
  });
});

app.use(passport.initialize());
app.use(passport.session());

我的登录表单(pug)的底部:

if messages
   ul
    for message in messages
     li!= message

谢谢!

zw6520 回答:表达:Passport.js LocalStrategy

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3148379.html

大家都在问