oauth-2.0 使用Passport身份验证回调重定向并显示错误消息

pvabu6sv  于 2022-10-31  发布在  其他
关注(0)|答案(1)|浏览(189)

我正在使用passport和oauth2策略,并试图找到一种方法将错误消息传递到错误页面,这是一个.ejs模板文件。是否有一种方法将实际错误传递到这个/error.ejs页面?如果没有,是否有一种方法不重定向,而只是控制台日志错误。我只需要在重定向之前看到错误是什么?

router.get(
  process.env.CALLBACK,
  passport.authenticate("oauth2", {
    failureRedirect: "/error",
    successRedirect: "/",
  })
);

router.get("/error", (req, res) => {
  console.log("req = ", req.error);
  res.render("error");
});

就错误. I事件尝试消息而言,未返回任何内容

kg7wmglp

kg7wmglp1#

基于源代码,有两种方法。

方法1:

  • 在验证参数中设置failureMessage: true
  • req.session.messages获取错误路径中的错误消息
router.get(
  process.env.CALLBACK,
  passport.authenticate("oauth2", {
    failureRedirect: "/error",
    failureMessage: true,
    successRedirect: "/",
  })
);

router.get("/error", (req, res) => {
  console.log("req = ", req.session.messages);
  res.render("error");
});

(ref网站:https://github.com/jaredhanson/passport/blob/master/lib/middleware/authenticate.js#L27)

方法二:

  • 您可以提供一个自定义回调函数,而不是使用params传递对象:
router.get(
  process.env.CALLBACK,
  function (req, res, next) {
    passport.authenticate("oauth2", function (err, user, info, status) {
      if (err) {
        // do something with the error
        console.error("error: ", err);
      }
      // success
      res.redirect("/");
    })(req, res, next);
  }
);

(ref),请访问

相关问题