表达参数路由发送到 /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}`});
};
我有一个看起来像这样的路由器:
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。
我一直在尝试遵循诸如 userId
复制并粘贴到 URL 在目标格式中它工作正常并正确加载该用户配置文件。我想我在用户登录后实际上在 URL 中制作 URL 'appear' 时遗漏了一些步骤,但功能本身正在运行。
如何使个人资料页面按预期仅供个人资料/{userId} 中的当前用户使用?
您硬编码了字符串 '/profile/:userid'
,但您需要以某种方式包含当前用户 ID。
我不知道在你的情况下如何访问用户,但你必须这样做:
login = (req, res) => {
res.oidc.login(
{ returnTo: `/profile/${currentUser.id}`});
};