【问题标题】:express server redirect issues快递服务器重定向问题
【发布时间】:2019-04-30 05:14:05
【问题描述】:

我正在使用 React 和 Express 构建/学习网络应用。所有路由和重定向都有效,但 URL 不会改变,我的道具不会通过,直到我手动转到 URL。

例如;

成功登录后(使用 MongoDB 的本地通行证),它会呈现主页但它是空的,因为我没有得到任何数据(用户 ID 或电子邮件等)但是如果手动输入 URL 或按导航上的主页按钮-栏,它可以工作,或者如果我注销它注销但 URL 停留在 /logout 而不是 /login。示例代码如下:

server.js

...
server.use((req, res, next) => {
  res.locals.success_msg = req.flash("success_msg");
  res.locals.error_msg = req.flash("error_msg");
  res.locals.error = req.flash("error");
  res.locals.messages = req.flash();
  res.locals.user = req.user;
  next();
});

server.get("/index", ensureAuthenticated, (req, res) => {
  const msg = {name: req.user.name, email: req.user.email};
  return app.render(req, res, "/index", msg);
});

server.post("/login", (req, res, next) => {
  passport.authenticate("local", function(err, user, info) {
    if (err) {
      return next(err);
    } else if (!user) {
      req.flash("error_msg", info.message);
      return app.render(req, res, "/login", req.flash());
    } else {
      req.logIn(user, function(err) {
        if (err) {
          return next(err);
        }
        req.user = user.name;
        return app.render(req, res, "/index", user.name);
      });
    }
  })(req, res, next);
});

server.get("/logout", (req, res) => {
  req.logOut();
  req.flash("success_msg", "done!");
  return app.render(req, res, "/login", req.flash());
});

server.get("*", ensureAuthenticated, (req, res) => {
  return handle(req, res);
});

【问题讨论】:

    标签: node.js reactjs express next.js


    【解决方案1】:

    我认为您在登录方法中使用return app.render(req, res, "/index", user.name); 的意思实际上是redirect

    render 的作用是获取文件和您提供的数据,然后将其作为响应发送回浏览器。

    但是,如果登录过程成功,您要做的是让用户转到不同的 URL,这可以通过执行以下操作来完成:

    res.redirect('/index')
    

    这将使服务器转到您的index 路由,从而执行加载用户数据所需的所有代码!

    您可以通过查看 express 文档了解更多关于 redirectrender 的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      • 2018-09-09
      • 1970-01-01
      • 2017-04-19
      • 2016-01-21
      • 1970-01-01
      • 2020-01-12
      相关资源
      最近更新 更多