我正在使用Passport.js通过OAuth与Google进行身份验证(我正在使用passport-google-oauth策略)。它工作正常,但我目前正在将用户重定向到“/”,我想将它们发送到“/”加上当前的哈希标记。我可以在查询字符串参数中发送哈希值,但我似乎无法将该值设置为我传递给身份验证的对象的callbackURL属性。
有人可以提供一个示例或解释正确的方法吗?我不喜欢使用查询字符串,它似乎是最直接的路线,但我愿意使用会话变量或其他东西,如果那样更容易或更好的练习。
谢谢。
答案 0 :(得分:3)
您可以通过在会话中存储返回网址来实现此效果。
// server
var app, express;
express = require('express');
app = express();
app.configure(function() {
app.use(express.cookieSession({secret: 'shh'}));
});
app.get('/auth/twitter', function(req, res, next) {
// to return to '/#/returnHash', request this url:
// http://example.com/auth/twitter?return_url=%2F%23%2FreturnHash
// on the client you can get the hash value like this:
// encodeURIComponent("/"+window.location.hash)
req.session.return_url = req.query.return_url;
next();
}, passport.authenticate('twitter'));
app.get('/auth/twitter/callback', passport.authenticate('twitter', {
failureRedirect: '/login'
}), function(req, res) {
var url = req.session.return_url;
delete req.session.return_url;
// redirects to /#/returnHash
res.redirect(url);
});