Quantcast
Channel: laravel5.8タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 87

laravelミドルウェアについて[メモ]

$
0
0
laravelで自作のミドルウェア作成する機会があったのでメモとして残していこうと思います。 ■目次 ・laravel MVC+(ルーティングとミドルウェア)について [図] ・ミドルウエア実装 ■環境 ・laravel5.8 ・php7.2 laravel MVC+(ルーティングとミドルウェア)について [図] 図で書くとこんな感じです。 ミドルウェアは ルーティングからコントローラ行くまでに実行されます。 (例)認証チェックなど ミドルウェア実装 ■前提(投稿アプリ作成) 現状として、 投稿4つあります。 id:4が自分が投稿したidとします。 しかし、localhost/post/1/editにアクセスするとid:1の投稿にアクセスでき変更更新ができてします。 今回はミドルウェアを使って解決していこうと思います。 1、ミドルウェア作成 php artisan make:middleware EditCheck app\Http\Middlewareに作成されます。 2、ミドルウェア編集 EditCheck.php <?php namespace App\Http\Middleware; use Closure; use App\Post; //追加 class EditCheck { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $param = $request->route()->parameter('id'); //リクエストできたルートのパラメータidを取得 //今回は1が入ってくるとします $post = Post::findOrFail($param); //投稿したidを見つけます。今回は1の投稿を見つけます。 if (auth()->user()->id !== $post->user_id) { //ログインしたユーザーidと投稿したユーザーidが一致しない場合 return redirect('/')->with('error', '許可されていない操作です'); //一番初めの画面に戻ります。 } return $next($request); //正常なら通常のページが表示されます } } 3、ミドルウェア登録 登録方法が3つあります ①全ての処理に共通して処理を行う場合→$middleware ②複数のミドルウェアをまとめて(グループ)登録する場合→$middlewareGroups ③単体で使うミドルウェアを登録しておく場合→$routeMiddleware Kernel.php protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'editcheck' => \App\Http\Middleware\EditCheck::class,//追加 今回は③を採用します。 4、Routeでミドルウェア設定 web.php Route::get('post/{id}/edit', 'PostsController@edit')->name('post.edit')->middleware('editcheck'); これでlocalhost/post/1/editにアクセスすると最初の画面に戻されると思います。

Viewing all articles
Browse latest Browse all 87

Trending Articles