Next.jsクイズ
未ログインユーザーが /dashboard 以下へアクセスしたら /login にリダイレクトしたいです。Middlewareで適切な処理はどれですか?
解説
正解: request.cookiesでセッション有無を確認し、NextResponse.redirectで/loginへ返すMiddlewareはリクエストがページへ届く前に実行されるため、認証Cookieの有無を見て早い段階でリダイレクトできます。NextResponse.redirect(new URL('/login', request.url))のように返すことで、保護ページへのアクセスを制御できます。補足: Middlewareでは重いDBアクセスを避け、CookieやJWTなど軽量に判定できる情報を使うのが実務上扱いやすいです。A. request.cookiesでセッション有無を確認し、NextResponse.redirectで/loginへ返す: これが正解です。B. useRouterで現在URLを確認し、push('/login')を呼ぶ: useRouterはClient Component用で、Middlewareでは使えません。C. Server Componentのreturn内でNextResponse.redirectを返す: NextResponseはRoute HandlerやMiddleware向けで、ページJSXの戻り値ではありません。D. generateMetadataでログイン状態を確認し、titleをloginに変える: メタデータ変更ではアクセス制御になりません。