2012-01-20 8 views
4

ユーザーがセキュリティ保護されたコンテンツへのリンクを共有できるようにしたい。 www.mysite.com/#/article1の場合、別のユーザーがこのリンクを開くと、ログインページにリダイレクトされ、完了すると同じURLにリダイレクトされます。everyauth.twitter.redirectPath( '/'); - 元のページのURLに基​​づいて変更する

ハッシュタグを使用しているので、通常のURLでもこれを行う方法はありません。

現在、.redirectPath( '/')は文字列でなければならないため、文字列を返す関数にすることはできません。また、req.urlにアクセスできないため、どのように動的に取得できますかその値。

これはtwitter特有の問題ではなく、私が信じるすべてのoAuthログインと同じです。

答えて

4

私は同じ問題があります。 現時点では、これを達成するためのシンプルなセッションスキーマを使用していますが、これは最善の解決策ではありません。例えば

:それは機能の不足のように思えるように私は少し上記の回避策を改善

app.get('/', function(req, res) { 
    if (req.session.redirect) {  
    res.redirect(req.session.redirect); 
    req.session.redirect = null; 
    } else { 
    res.render('index'); 
    } 
}); 
0

(ソリューション、それを呼び出すことはできません。

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

をし、あなたのeveryauthでのパスがリダイレクトeveryauth):

最初の部分は同じまま:

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

第2の部分はに移動: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 
関連する問題