2016-12-29 11 views
0

私はreact-reduxアプリを持っており、認証のためにパスポート - フェイスブックを使用しています。私は、ユーザーがアプリケーションの任意のページからログインし、すぐに同じページに戻る(リダイレクトされる)ことができるようにしたい。これを達成するための最良の方法は何ですか?ユーザーがパスポート - フェイスブック認証でreact-reduxアプリにログインしたページにリダイレクトするにはどうすればよいですか?

これまでのところ、私は以下の解決策を考え出しましたが、それは正しくはありません。私は 'ダミー' SuccessLoginコンポーネントを作成し、成功したログイン後にそのコンポーネントにリダイレクトします。 「ダミー」コンポーネントでは、ユーザーを前の場所に再度リダイレクトします。

サーバーサイドコード:

router.get '/facebook/callback', passport.authenticate('facebook', { successRedirect: '/success', failureRedirect: '/auth' }) 

私の 'ダミー' のコンポーネントは次のようになります。

redirectBack =() -> 
    (dispatch, getState) -> 
    dispatch go(-1) 

goはアクションです:

class SuccessLogin extends React.Component 

    componentDidMount:() -> 
    @props.redirectBack() 

    render:() -> 
    null 

これはredirectBackが定義されている方法ですReact-Router-Reduxの作成者:https://github.com/reactjs/react-router-redux

このソリューションで問題が発生しますか?このロジックを実装するにはどうすればよいでしょうか?

答えて

0

私は、React-Reduxとは何の関係もない解決策を見つけました。これらの質問には、Redirecting to previous page after authentication in node.js using passport.jshow to redirect to original page after successful authentication using passport-google-oauthの2つがあります。 サーバー側コード:

setRedirect = (req, res, next) -> 
    req.session.redirectTo = req.headers.referer 
    next() 

successRedirect = (req, res) -> 
    destination = req.session.redirectTo || '/' 
    res.redirect(destination) 

router.get '/facebook', setRedirect, passport.authenticate('facebook', { scope: ['email'] })  
router.get '/facebook/callback', passport.authenticate('facebook', { failureRedirect: '/auth' }), successRedirect 
関連する問題