【问题标题】:Redirect from one route to another in Express在 Express 中从一条路线重定向到另一条路线
【发布时间】:2017-02-03 23:58:18
【问题描述】:

我在 nodejs 中有以下路线

这里是users.js路线

router.post('/users/login', function(request, response) {
    // let user login here and do all of the logic.

    // Once done then redirect user to dashboard in dashboard.js file
    response.redirect('/dashboard');
});

这里是dashboard.js 路由

 router.get('/dashboard', function(request, response) {
     response.render('plans');
 });

现在,当我以用户身份登录时,当它尝试重定向我时,它会显示以下信息。

cannot get Cannot GET /users/dashboard

我希望用户重定向到 /dashboard/dashboard

如何在 Express 中将用户从一条路线重定向到另一条路线?

【问题讨论】:

  • 您可能需要更明确地使用您的路由重定向——它似乎保留在目录中(可能不是正确的工作,因为它是一个路由)/users。试试response.redirect('/dashboard/dashboard');,如果不起作用,也许相对的..会有所帮助?
  • 他的重定向应该可以工作,因此docs '/path' 应该是相对于根目录,并且没有前导斜杠它应该是相对于当前路径。 @2619 你能在浏览器中检查你的响应重定向标头吗?

标签: javascript node.js express


【解决方案1】:

我和你有同样的疑问,我来这里寻找答案但没有找到,所以我不得不自己在文档中挖掘解决方案,我找到了一个。

所以现在来回答。使用 res.redirect('/dashboard') 会采用相对于当前路由的路径,即用户/仪表板,如果您有单独的仪表板路由,那么您将不得不使用它这边走: res.redirect('../dashboard/dashboard')

我的项目预览仅供参考:

routes folder

这里是user_home.js 路线:

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.send("Hello User, welcome to user_home page");
});

router.get('/dashboard', function(req, res, next) {
  res.send("Hello User, this your personal dashboard");
});

module.exports = router;

这是我重定向的路线中的代码:

else {
      console.log("Input validated!");
      res.redirect('../user_home/dashboard');  
}

P.S:这是我关于堆栈溢出的第一个答案,很高兴我能帮助别人。

【讨论】:

    【解决方案2】:
    res.redirect('auth/login');
    

    我在我的一条名为“contributions”的路线中有这个,当它被重定向时,它被呈现为“contributions/auth/login”,这是错误的。

    我需要的主要是'localhost://port/auth/login。

    我将我的 ejs 锚标签更改为“/auth/login”,它将从根目录获取 url,以前是“auth/login”,它将 url 作为当前 url + 提供的 url,即“contributions/auth/在我的情况下登录。

    希望这会有所帮助。

    【讨论】:

    • 我不认为它相关。
    【解决方案3】:

    不要在response.redirect('/dashboard'); 中使用/,因为这会将/dashboard 添加到当前网址。请改为:response.redirect('dashboard');

    【讨论】:

      【解决方案4】:

      在我的情况下,我创建了一个重定向,以防我没有 req.query 参数。所以在重定向之后我添加了一个返回。

             if(req.query.tk==null)
          {
              res.redirect('landing-page');
              return;
          }....
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-18
        • 2016-11-08
        • 2014-12-23
        • 1970-01-01
        • 2017-01-31
        • 1970-01-01
        • 2023-01-18
        • 1970-01-01
        相关资源
        最近更新 更多