我希望用户能够共享安全内容的链接,例如。 www.mysite.com/#/article1,然后当另一个用户打开此链接时,他们会被重定向到登录页面,然后在完成后,他们会被重定向到相同的URL。
我有一个单页应用程序,所以使用哈希标签,但我也没有看到任何方法使用普通网址。
目前.redirectPath('/')必须是一个字符串,所以我不能使它成为一个返回字符串的函数,也不能访问req.url所以不知道我怎么能动态地得到它值。
这不是特定于Twitter的问题,我相信所有的oAuth登录都是一样的。
答案 0 :(得分:4)
我遇到了同样的问题。 此时我正在使用一个简单的会话模式来实现这一点,尽管它不是最好的解决方案。
例如:
app.get('/login/facebook', function(req, res) {
req.session.redirect = req.header('referer');
res.redirect('/auth/facebook');
});
并在你的每个人的重定向路径上:
app.get('/', function(req, res) {
if (req.session.redirect) {
res.redirect(req.session.redirect);
req.session.redirect = null;
} else {
res.render('index');
}
});
答案 1 :(得分:0)
我略微改进了上述解决方法(不能将其称为解决方案,因为它似乎缺少everyauth中的功能):
第一部分保持不变:
app.get('/login/facebook', function(req, res) {
req.session.redirect = req.header('referer');
res.redirect('/auth/facebook');
});
第二部分移至:everyauth.facebook.findOrCreateUser
:
findOrCreateUser(function(session, accessToken, accessTokenExtra, facebookUser){
var promise = this.Promise();
// your logic of finding or creating the user here
if (session.redirect) { // just before the return
this.redirectPath(session.redirect); // dynamic path
delete session.redirect;
}
return promise;
}).
redirectPath('/'). // static path