Middlewareを学びます。Middlewareというと何を思い浮かべるでしょうか?
ミドルウェアはその名の通り、OSとアプリケーションの中間にあるソフトウェアという意味です。
フレームワークLaravelでのMiddlewareとはどういう意味でしょうか?そもそもLaravel自体はOSではなく、アプリケーションのソフトウェアです。そのフレームワークにミドルウェアという機能があるのは何か虎に睨まれたようです。では具体的に見ていきましょう。
まず、新規にプロジェクトを立ち上げます
$ php artisan make:auth
$ php artisan migrate
./app/Http/kernel.php
1 2 3 4 5 6 7 | protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate:: class , 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth:: class , 'can' => \Illuminate\Foundation\Http\Middleware\Authorize:: class , 'guest' => \App\Http\Middleware\RedirectIfAuthenticated:: class , 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests:: class , ]; |
./app/Http/Middleware
Authenticate.php
EncryptCookies.php
RedirectIfAutenticated.php
VerifyCsrfToken.php
Authenticate.php
1 2 3 4 5 6 7 8 9 10 11 12 | public function handle( $request , Closure $next , $guard = null) { if (Auth::guard( $guard )->guest()) { if ( $request ->ajax() || $request ->wantsJson()) { return response( 'Unauthorized.' , 401); } else { return redirect()->guest( 'login' ); } } return $next ( $request ); } |
$ php artisan make:middleware RoleMiddleware
Middleware created successfully.
$ php artisan down
Kernel.php
1 2 3 4 5 6 7 8 | protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate:: class , 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth:: class , 'can' => \Illuminate\Foundation\Http\Middleware\Authorize:: class , 'guest' => \App\Http\Middleware\RedirectIfAuthenticated:: class , 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests:: class , 'role' =>\App\Http\Middleware\RoleMiddleware:: class , ]; |
Route
1 2 3 4 | Route::get( '/admin/user/roles' , [ 'middleware' => 'role' , function (){ return "Middleware role" ; }]); |
app/Http/Middleware/RoleMiddleware.php
1 2 3 4 5 6 | public function handle( $request , Closure $next ) { return redirect( '/' ); return $next ( $request ); } |
/admin/user/roles にアクセスするとリダイレクトされます。