4

我希望用户能够共享链接以保护内容,例如。www.mysite.com/#/article1,然后当另一个用户打开此链接时,他们会被重定向到登录页面,然后在完成时他们会被重定向到相同的 URL。

我有一个单页应用程序,因此使用哈希标签,但我也看不到任何使用普通 URL 的方法。

目前 .redirectPath('/') 必须是一个字符串,所以我不能让它成为一个返回字符串的函数,它也无法访问 req.url 所以不确定我如何能够动态地获取该值。

这不是 Twitter 特有的问题,我相信所有的 oAuth 登录都是一样的。

4

2 回答 2

4

我有同样的问题。目前我正在使用一个简单的会话模式来实现这一点,尽管它不是最好的解决方案。

例如:

app.get('/login/facebook', function(req, res) {
  req.session.redirect = req.header('referer');
  res.redirect('/auth/facebook');
});

并在您的everyauth 的重定向路径:

app.get('/', function(req, res) {
  if (req.session.redirect) {    
    res.redirect(req.session.redirect);
    req.session.redirect = null;
  } else {
   res.render('index');
  }
});
于 2012-05-11T12:13:33.637 回答
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
于 2015-10-23T06:51:50.027 回答