Laravel5.1入門その3
ミドルウェアを触ってみる。
$ php artisan make:middleware AuthenticateUserAgent Middleware created successfully.
できた。
app/Http/Middleware/AuthenticateUserAgent.php
<?php namespace App\Http\Middleware; use Closure; class AuthenticateUserAgent { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { return $next($request); } }
本当に動いているか変えてみる。
<?php public function handle($request, Closure $next) { \Log::debug("before dayo."); $response = $next($request); \Log::debug("after dayo."); return $response; }
app/Http/Kernel.php
$middlewareに突っ込むと、全リクエストに対してこのミドルウェアが有効になるらしい。(グローバルミドルウェア)
デフォルトで通るミドルウェアを一旦全部外して、自分のやつだけを置く。
<?php protected $middleware = [ // \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, // \App\Http\Middleware\EncryptCookies::class, // \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, // \Illuminate\Session\Middleware\StartSession::class, // \Illuminate\View\Middleware\ShareErrorsFromSession::class, // \App\Http\Middleware\VerifyCsrfToken::class, \App\Http\Middleware\AuthenticateUserAgent::class, ];
一回アクセスしてみる。 http://localhost/
storage/logs/laravel.log
ちゃんと出た。
[2015-06-17 14:39:21] local.DEBUG: before dayo. [2015-06-17 14:39:21] local.DEBUG: after dayo.
たとえばFirefox以外はアクセスさせないようにしてみる。
app/Http/Middleware/AuthenticateUserAgent.php
<?php public function handle($request, Closure $next) { $ua = $request->server->get('HTTP_USER_AGENT'); if (strpos($ua, 'Firefox') === false) { abort(404); } $response = $next($request); return $response; }
となった。