2017-06-19 5 views
2

私はリアクションルータv4を使用していて、保護されたapiビューを実装しようとしています。たとえば、ユーザーがログインしていないときに/add/のURLにアクセスすると、/login/にリダイレクトされ、成功すると/add/になります。ブラウザでリフレッシュした後にルータルータのv4ログインチェック

アイデアfrom this postを使用して実装できました。しかし、私は、アプリケーションをロードする最初のhttpリクエストが保護されたURLから来たときは常に問題にぶつかります。

など。 '/add/'ブラウザに入力してEnterキーを押すと、私のアプリがログインを確認するためにサーバーにajaxリクエストを送信する時間がない非同期の問題が発生し、結果としてルータは/login/にルーティングされます。 ajax認証要求が完了していません。

ユーザーが'/add/'のような保護されたURLでセッションを開始できることを考慮して、一般的にログインワークフローを推奨することはできますか?'/'

答えて

2

シンプルで標準的な反応パターンソリューションが見つかりました。ログインのajaxチェックが完了していない限り、<Route>コンポーネントを表示しないでください。

のでtrueに状態checkingLogInを初期化し、それがfalseならない限り任意の<Route>コンポーネントをレンダリングしていない初めてのアプリをロード、。ログインのためのajax関数のチェックが完了したら、setStateを呼び出してcheckingLogInfalseに設定します。これにより、<Route>が正しくレンダリングされ、リダイレクトされます。

関連する問題