表达参数路由发送到 /userid 而不是实际的 /{user id}

Express params routing sending to /userid instead of actual /{user id}

我有一个看起来像这样的路由器:

router.get('/', index_controller.index);
router.get('/login', index_controller.login)
router.get('/profile/:userId', index_controller.profile)

然后 2 个控制器应该将登录用户重定向到 profile/{userId}

login = (req, res) => {
    res.oidc.login(
      { returnTo: '/profile/:userid'});
};

profile = (req, res) => {
    const userid = req.oidc.userid;
    res.render('profile', { userid: userid,
      user: req.oidc.user,
    });
    console.log(userid);
  };

但是当用户登录时,他们会被重定向到“/profile/:userId”而不是实际的 userId。

我一直在尝试遵循诸如 , the Express docs here 之类的示例,但没有看到我遗漏了什么,因为当我手动导航时,通过将 userId 复制并粘贴到 URL 在目标格式中它工作正常并正确加载该用户配置文件。我想我在用户登录后实际上在 URL 中制作 URL 'appear' 时遗漏了一些步骤,但功能本身正在运行。

如何使个人资料页面按预期仅供个人资料/{userId} 中的当前用户使用?

您硬编码了字符串 '/profile/:userid',但您需要以某种方式包含当前用户 ID。

我不知道在你的情况下如何访问用户,但你必须这样做:

login = (req, res) => {
    res.oidc.login(
      { returnTo: `/profile/${currentUser.id}`});
};