を反応させ、PassportJS PassportJSベースのログイン認証と登録認証が正常にセットアップされました。私のアプリのすべてのページは保護されたルートです - ログインしているユーザーだけが見ることができます。認証ルートは、私は、次のスタックを使用しています
私の質問は、各ルートについて、ユーザーが現在ログインしているかどうかを確認する方法です。私はエクスプレスセッションはサーバー側のセッション管理を提供することを理解していますが、現在のユーザーのセッションが存在するかどうかを確認するために、各ページのロード時にバックエンドにAPIリクエストを行うことを回避する方法があるのだろうかと思います。
マイApp.jsファイル:
import React, { Component } from 'react';
import './App.css';
import { BrowserRouter, Route, Switch, Link } from 'react-router-dom';
import AsyncAuthPage from 'components/AsyncAuthPage/index.js'
const NoMatch =() => (
<p>Path not found</p>
);
const HomePage =() => (
<div>WELCOME!</div>
);
class App extends Component {
render() {
return (
<div className="App ">
<BrowserRouter>
<Switch>
<Route path="/login" component = {AsyncAuthPage} />
<Route path="/home" component = {HomePage} />
<Route path="*" component={NoMatch} />
</Switch>
</BrowserRouter>
</div>
);
}
}
export default App;
AsyncAuthPageコンポーネントが実装するPassportJSベースの認証。上記のサンプルでは、ホームページルートを認証で保護したいと思います。これはどうすればできますか?ユーザーが正常にログインした後、次のように世話をする必要があります
- App.jsは、そのログインを知っている必要がある親は
- 成功したすべてのページはのAPI呼び出しを避けるようにしてください現在のユーザーがログインしているかどうかを確認するために、可能な限り( componentDidMountまたはページのロードの)バックエンド、。
- はページで動作するはずですsuccessifulログイン後のlocalStorageであまりに
ログに記録するかどうかにかかわらず、ブール値をReduxに保存することができます。したがって、基本的には、彼がログに記録されているかどうかを確認するためにapi呼び出しを行う別のコンポーネントが必要で、それをreduxストアに置き、すべてのページをreduxに接続して値をチェックします。 – Coldblue
@Coldblue reduxのブール値はメモリに格納されます。ページをリロードすると、私は状態を失うでしょう。どのように値を維持するか? – Ninja
あなたがリフレッシュ時に状態を失うことは確かですが、componentWillMountでそのアクションを呼び出すと、コンポーネントがマウントされるたびにログオンしているかどうかを確認するためにAPI呼び出しを行うことができます。 – Coldblue