Laravel – アクセス制限

ミドルウェアの適用

コントローラー単位でアクション→ビューにアクセス制限をかける場合。コントローラーのコンストラクターでアクセス制限のミドルウェアを適用する。

$this->middleware('auth')

特定のアクションのみに適用したり、逆に適用除外にするには、only()/except()を使う。

たとえばマーケットサイトのCartControllerへのルーティングで、ログインユーザーのみ処理させるには以下の様にコントローラーを書く。

こうすると、ログイン状態でアクセスするとindexなどのアクションが実行されてビューに遷移するが、ログイン状態でない場合はログインページに遷移する。

middleware(‘auth’)

コンストラクターの$this->midlleware('auth')は、コントローラーの全アクションに対して名前'auth'のミドルウェアを適用する。

'auth'Kernel.phpでルートミドルウェアAuthenticateに結び付けられている。

Authenticateミドルウェア

Authenticateミドルウェアは、Laravelのプロジェクト作成時にapp/Middlewareディレクトリーに生成されている。

  • このミドルウェアのhandle()メソッドはIlluminate\Auth\Middleware\Authenticateで定義されている
  • $request->expectsJson()でログイン状態にあるかどうかを判定しているようだが、その流れはよくわかっていない

この'login'へのルーティングを変更すると、未ログインの場合の遷移先を変更できる。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です