D170 アクセス制御

アクセス制御とは特定のユーザーのみしかアクセスのできない制限をかけることをいいます。今回はこのアクセス制御について紹介します。

アクセス制御の方法について

Laravelではミドルウェアというものを用いてアクセス制限をかけることが多いです。

まずは下記コマンドにてミドルウェアを作成します。

php artisan make:middleware ミドルウェア名

app/Http/Middleware/ 配下に新しいファイルを作成後、handleメソッド内を下記のように変更します。if文によりアクセス権限を持ったユーザーか否かを判断しreturnをしております。

PHP
if(Auth::check()){
       return $next($request);
     }else{
       return redirect(route('login'));
     }

その後、app/Http/Kernel.phpに今回追加したミドルウェアを追加します。

PHP
protected $middlewareAliases = [
       'auth' => \App\Http\Middleware\Authenticate::class,
       'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
       'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
       'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
       'can' => \Illuminate\Auth\Middleware\Authorize::class,
       'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
       'guest.wagyu' => \App\Http\Middleware\RedirectIfAuthenticated_Wagyu::class,
       'guest.bento' => \App\Http\Middleware\RedirectIfAuthenticated_Bento::class,
       'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
       'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
       'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
       'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
   ];

そして、routes/web.phpにてルーティングを追加します。

PHP
Route::group(['middleware' => ['今回追加したmiddlewre名']], function() {
 //制限をかけたいパスを指定
}):

上記手順によりアクセス制御をかけることができます。

エンジニアからのアドバイス

ウェブアプリであれば管理者のみしかみれないページを作ることは一般的です。管理者ページと一般ユーザーページの違いは意識して作成しましょう。

---