【发布时间】:2018-09-03 16:47:42
【问题描述】:
Routes.js
app.get('/auth/google/redirect', passport.authenticate('google'), (req, res) => {
console.log('req.user:', req.user) //>>>>>Outputs {username: 'bob', id: '..and so on'...}
res.redirect('/profile/test')
})
profileRoutes.js
app.get('/profile/test', (req, res) => {
res.send('This is the req.user: ' + req.user);
})
输出:“这是req.user:
undefined”
请注意,在重定向到/profile/test 之前,我成功地访问了routes.js 中的req.user,为什么route.js 中的req.user 变量没有传递给/profile/test?
如果我不重定向,然后只发送req.user,它会按预期工作:
app.get('/auth/google/redirect', passport.authenticate('google'), (req, res) => {
res.send(req.user)
})
输出:{"_id":"5b8d42186cfd139c00c42c9","username":"Ryan Cameron","googleId":"11280041518849062335","__v":0}
我在 youtube 上关注 theNetNinja 的教程,这对他很有用。所以很奇怪为什么变量没有被传递给我的新重定向路由,但它对他有用。 Watch it work for him
为什么req.user变量没有传递给重定向的路由?
我可以将查询字符串中的变量传递给重定向的路由但不会是安全。视频中的那个人没有这样做,他的代码和我上面的一样。但由于某种原因,它对我不起作用。为什么?
【问题讨论】:
-
因为你没有为第二条路由设置认证中间件。
-
没有迈克尔已经看到了。他正试图将一个变量传递给一个玉文件。这对我不起作用,我正在尝试将变量传递给重定向的路由。
-
@SLaks 这不应该是必要的,我想要的只是将变量传递给重定向的路线。
-
重定向会导致来自浏览器的新请求。该请求不共享上一个请求的任何内容。
标签: javascript node.js express