-
認証コンポーネントの作成: まず、ログイン機能を実装するために認証コンポーネントを作成します。このコンポーネントは、ユーザー名とパスワードの入力フィールドを持ち、ログインボタンを提供します。ユーザーがログインボタンをクリックすると、入力された情報をサーバーに送信して認証を行います。
-
ログイン状態の管理: Reactでは、ログイン状態を管理するために、通常は状態管理ライブラリ(例:Redux)やReactのContext APIを使用します。ログイン状態は、認証が成功した場合にトークンやセッションIDなどの形式で保存され、アプリケーション全体で参照できるようにします。
-
プライベートルートの作成: プライベートルートは、ログインが必要なコンポーネントやページを含むルートです。React Routerを使用して、ログイン状態を確認し、ログインしていない場合にはログインページにリダイレクトするように設定します。
以下は、Reactでプライベートルートを保護するためのコード例です。
import React from 'react';
import { BrowserRouter as Router, Route, Redirect } from 'react-router-dom';
// 認証コンポーネント
const Auth = () => {
const [loggedIn, setLoggedIn] = React.useState(false);
const [username, setUsername] = React.useState('');
const [password, setPassword] = React.useState('');
const handleLogin = () => {
// ログインの処理を実装する
// 成功した場合はsetLoggedIn(true)を呼び出す
};
if (loggedIn) {
return <Redirect to="/private" />;
}
return (
<div>
<input
type="text"
value={username}
onChange={(e) => setUsername(e.target.value)}
/>
<input
type="password"
value={password}
onChange={(e) => setPassword(e.target.value)}
/>
<button onClick={handleLogin}>ログイン</button>
</div>
);
};
// プライベートルートのコンポーネント
const PrivateRoute = ({ component: Component, ...rest }) => {
const loggedIn = // ログイン状態を取得する方法を実装する
return (
<Route
{...rest}
render={(props) =>
loggedIn ? (
<Component {...props} />
) : (
<Redirect to="/login" />
)
}
/>
);
};
// アプリケーションのエントリーポイント
const App = () => {
return (
<Router>
<div>
<Route path="/login" component={Auth} />
<PrivateRoute path="/private" component={PrivateComponent} />
</div>
</Router>
);
};
// プライベートルートのコンポーネント
const PrivateComponent = () => {
return <div>プライベートコンポーネント</div>;
};
export default App;