2017-01-30 5 views
1

初心者回答の質問:私はpassport.jsでそれを使用しています。私は正常にアプリケーションにログインしています。しかし、私はリダイレクトの仕方を知らない。passport.jsでログインした後の反応で「リダイレクト」する方法は?

router.post('/login', 
    passport.authenticate('local'), 
    function(req, res) { 
    // If this function gets called, authentication was successful. 
    res.redirect('/upload'); //<—— what I’d like to do is some kind of redirect here 
}); 

助けてください。

+0

あなたがクライアント上 – lustoykov

+1

あなたはおそらく({redirectURI: "/アップロード"} res.jsonを使用する代わりにres.redirect使用していないAJAX要求し、そのために使用すること)そしてクライアントの応答でajax要求の応答を処理する - redirectURIを取得し、基本的にwindow.location = response.redirectURIを書く – mike

+0

ああ、それは今私にとってもっと意味がある、私はそれを行って、感謝します。 – Brian

答えて

1

コールバックルートで実行します。

router.get('/facebook', passport.authenticate('facebook', { scope: ['public_profile', 'email'] })); 

router.get('/facebook/callback', 
    passport.authenticate('facebook', { failureRedirect: "/" }), function (req, res) { 
     if (req.user || req.session.user) 
      return res.redirect('/' + req.user._id || req.session.user._id); 
     return res.redirect('/login'); 
    }); 

ここでは、Facebookのログインにpassport.jsを使用しました。 /facebook/callback/loginにリダイレクトしました。/loginにセッションが設定されているかどうかを確認する機能があります。

if (Helper.isLoggedIn(req)) { 
    res.redirect('/'); 
    return; 
} 

Helper.js内部isLoggedInの定義は

function isLoggedIn(req) { 
    if (req.session && req.session.user_email && req.session.user_email != null) { 
     if (!req.user || req.session.user == undefined || req.session.user == null) { 
      loadUserFrom(req); 
     } 
     return true; 
    } 
    return false; 
} 
+0

多分私はこれを言って間違っていますが、res.redirectは反応するようには見えません。 – Brian

+0

それは私の最後に取り組んでいます。私も反応を使用しています。他にも問題があるかもしれません。 –

+1

マイクの解決策が私のために働いています。私はあなたのソリューションがあなたのために働いていると確信しています。正直言って、それは自分自身を紹介するおもちゃのプロジェクトだから、私はそれを理解しなければならないだろう。私はあなたの助けに感謝します。 – Brian

0

であるあなたが反応する-JSをサーバからの応答を取得した後で、リダイレクトを行うことを検討することができますように。あなたはredux-thunkを使用すると仮定します。

action.js:

import axios from 'axios'; 
import { browserHistory } from 'react-router'; 

export function signinUser({ email, password }) { 
    return function(dispatch) { 
    axios.post(`${ROOT_URL}/signin`, { email, password }) 
     .then(response => { 
     // Successful login, redirect to /upload 
     browserHistory.push('/upload'); 

     }) 
     .catch(() => { 
     //handle the error response from server 

     }); 
    } 
} 
関連する問題