最近はCodeIgniterを使うことが多いので
Laravel(7系)とCodeigniter4を比較しながらミドルウェアについてのメモです.
ちなみにCodeigniter4ではフィルタ-と呼びます
セッションで保持している年齢が20歳未満ならhomeにリダイレクトするというミドルウェアにします
ミドルウェアの登録
- Laravel
app/Http/Kernel.php
protected $routeMiddleware = [
'checkAge' => \App\Http\Middleware\CheckAge::class
]
- Codeigniter
app/Config/Filters.php
public $aliases = [
'checkAge' => \App\Filters\CheckAge::class
];
ミドルウェアの定義
20歳未満ならhomeへリダイレクトさせます
- Laravel
app/Http/Middleware/CheckAge.php
<?php
namespace App\Http\Middleware;
use Closure;
class CheckAge
{
/**
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (session("age") < 20) {
return redirect('home');
}
return $next($request);
}
}
- Codeigniter
app/Filters/CheckAge.php
<?php
namespace App\Filters;
use CodeIgniter\HTTP\RequestInterface;
class CheckAge implements FilterInterface
{
public function before(RequestInterface $request)
{
if(session()->get('age') < 20){
return redirect()->to('home');
}
}
ルートに対し年齢確認のミドルウェアを指定する
- Laravel
routes/web.php
// 登録したミドルウェア名で検証する
Route::group(['middleware' => 'checkAge', 'prefix' => 'adult'], function() {
Route::get('/member', 'MemberController@index');
});
- Codeigniter
app/config/Routes.php
$routes->group('adult', ['filter' => 'checkAge'], function($routes)
{
$routes->get('member', 'MemberController::index');
});
結論 Laravelで良くね?