← いちらんへ もどる
Phase 7 ・ だい25かい 🛡️

ログインした人だけの
ページ

🎯 きょうのゴール

Phase 7 のまとめの回。ここまでで作ってきた「枠組み」が、ぜんぶそろいます。

📖 まなぼう

入口でチェックする

まず言葉から。クライアントは自分のブラウザ側、サーバーは遠くにあって全員の相手をするコンピューター。やりとりは、クライアントがお願いして、サーバーが返す形です。

「ログインした人だけのページ」は、そのページのいちばん最初でチェックします。「ログインしてる?してなければ、ログイン画面へ」と。これを 擬似ぎじコード(考えを言葉のまま書いたもの)で書くと、こんなイメージ。

if (ログインしていない) { ログイン画面を見せる }

ログインしている人だけが、その先の中身を見られる。これが入口のチェックだね。

サーバーはクライアントを信用しない

もっと大事な話。クライアント(自分のブラウザ)は、書きかえられるから、送られてきた値をそのまま信じてはいけません。

九九アプリを思い出そう。もし答え合わせをブラウザ側だけでやって「正解でした!」とサーバーに送ると、わるい人はその「正解!」をウソに書きかえて送れてしまう。だから九九アプリは、送られてきた答えをサーバー側でもう一度正誤を判定し直してから保存しています。

// サーバー側でもう一度たしかめる isCorrect: chosen === dan * multiplier

つまり「送られてきた値をうのみにしない」。これが「サーバーはクライアントを信用しない」という、ずるを防ぐための大事な約束です。

✋ やってみよう
  1. ログアウトした状態で /kuku を開いてみる。中身ではなくログイン画面が出るね。これが「入口のチェック」だよ。
  2. app/api/kuku/attempts/route.ts を開いて、サーバーで正誤を判定し直している所を探す。(見つからなければ AI に「どこで再判定してる?」と聞いてみよう)
  3. なぜ「ブラウザだけの判定」ではダメなのか、自分の言葉で説明してみる。
💡 AIと考えよう:「もしサーバーがクライアントを信用したら、どんなズルができる?」と聞いて、いくつ思いつくか出してみよう。
🔁 ふりかえり

これで枠組みが一周そろった! つぎの Phase 8 からは、いよいよ自分のアプリを作っていくよ。