ミドルウェアでルートを保護する
authとguestミドルウェアを使ってルートを保護し、ユーザーをリダイレクトします
「ミドルウェアでルートを保護する」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全4レッスンが含まれています。
ミドルウェアとは
ミドルウェアは、HTTPリクエストがコントローラーに到達する前または後に実行されるコードです。認証、ロギング、CORS、レート制限などに使用します。
組み込みの認証ミドルウェア
authミドルウェアは、未認証のユーザーをログインページにリダイレクトします(APIリクエストの場合は401を返します)。
<?php
Route::get("/dashboard", [DashboardController::class, "index"])
->middleware("auth");グループへのミドルウェアの適用
ルートのグループ全体を一度に保護できます。
<?php
Route::middleware(["auth", "verified"])->group(function () {
Route::get("/dashboard", [DashboardController::class, "index"]);
Route::get("/profile", [ProfileController::class, "show"]);
});guestミドルウェア
guestミドルウェアは、認証済みユーザーをログインページや登録ページからリダイレクトします。
<?php
Route::middleware("guest")->group(function () {
Route::get("/login", [LoginController::class, "create"]);
Route::get("/register", [RegisterController::class, "create"]);
});カスタムミドルウェアの作成
Artisanで生成し、handle()メソッドを実装します。
$ php artisan make:middleware EnsureSubscribedカスタムミドルウェアのロジック
処理を続行するには次のリクエストを返し、中断するにはレスポンスを返します。
<?php
public function handle(Request $request, Closure $next): Response
{
if (!$request->user()?->isSubscribed()) {
return redirect("/subscribe");
}
return $next($request);
}ミドルウェアの登録
app/Http/Kernel.php(Laravel 10)またはbootstrap/app.php(Laravel 11以降)でミドルウェアのエイリアスを登録します。
<?php
// Laravel 11+ bootstrap/app.php:
->withMiddleware(function (Middleware $m) {
$m->alias(["subscribed" => EnsureSubscribed::class]);
})ミドルウェアのパラメーター
コロンを使用してミドルウェアにパラメーターを渡します。
<?php
Route::middleware("role:admin")->group(function () {
// ...
});
// In middleware handle():
public function handle(Request $request, Closure $next, string $role): ResponseAfterミドルウェア
$next($request)の後にあるコードは、レスポンスが生成された後に実行されます。ロギングやレスポンスの変更に便利です。
<?php
public function handle(Request $request, Closure $next): Response
{
$response = $next($request); // controller runs here
$response->headers->set("X-App", "Laravel");
return $response;
}ミドルウェアの優先順位
ミドルウェアが実行される順序は重要です。グローバルミドルウェア(TrimStringsなど)は、ルートミドルウェアより先に実行されます。
Throttleミドルウェア
Laravelには、throttleミドルウェアによるレート制限が組み込まれています。
<?php
Route::middleware("throttle:60,1")->group(function () {
// 60 requests per 1 minute
});概要
ミドルウェアはHTTPリクエストをフィルタリングします。ルートを保護するにはauthを適用し、ビジネスルールにはカスタムミドルウェアを作成し、ミドルウェアを共有するにはルートをグループ化します。
クイックチェック
未認証のユーザーに対して、authミドルウェアは何をしますか?
よくある質問
「ミドルウェアでルートを保護する」レッスンは無料ですか?
はい。「ミドルウェアでルートを保護する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全4レッスンが含まれています。
「ミドルウェアでルートを保護する」で何を学びますか?
authとguestミドルウェアを使ってルートを保護し、ユーザーをリダイレクトします ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
PHP Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「ミドルウェアでルートを保護する」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このPHP Academyレッスンでコードを書いて実行できますか?
はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Laravel Breezeによる認証
- ミドルウェアでルートを保護する
- Gate:シンプルな認可チェック
- Policy:モデルベースの認可