因此,我正在处理here所提供的信息,以添加Google重定向到用户重定向到Google之前所处页面的功能。我目前正在使用最新版本的Express,PassportJS和Google oauth2。
例如,如果用户点击了网页 http://example.com/privatecontent ,它会自动重定向到谷歌要求登录,并且在它成功之后它会返回我的节点应用程序,除了它没有不知道最后一页是/ privatecontent而是重定向到索引。
如果我理解正确,我可以使用state参数让Google知道发送状态参数,以便我可以阅读它并重定向自己。
我基本上希望我的功能看起来像这样,但我无法访问req.headers,或者只是不知道在passport.authenticate中是多么诚实。
app.get("/auth/google", passport.authenticate("google", {
scope: ["https://www.googleapis.com/auth/userinfo.profile", "https://www.googleapis.com/auth/userinfo.email"],
state: base64url(JSON.stringify({
lastUrl: req.headers['referer']
}))
}), function(req, res) {});
答案 0 :(得分:5)
制作自定义中间件
function myCustomGoogleAuthenticator(req, res, next){
passport.authenticate({
scope: ...
state: // now you have `req`
})(req, res, next);
//^ call the middleware returned by passport.authenticate
}
将其添加到您的路线
app.get("/auth/google", myCustomGoogleAuthenticator, function(req, res) {});