元々パラメータをsessionに保存してControllerに使うつもりで、最初に考えた方法は
- bootstrap/app.php に記述
- ServiceProvider読み込みにフック
- 設定ファイルの読み込み
- エイリアスの登録
- ミドルウェアに登録
ですが、うまく行きませんでした。
もっと簡単な方法でrequestに追加します。
$request->attributes->add(['user' => $user]);
return $next($request);
Controller側受け取る方法
use Illuminate\Http\Request;
public function index(Request $request)
{
$user = $request->get('user');
}
Middlewareのサンプルソース
<?php
namespace App\Http\Middleware;
use Closure;
use App\Models\Entities\User;
class BeforeMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$user['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
$user['ip'] = $_SERVER['REMOTE_ADDR'];
$user['referer'] = $_SERVER['HTTP_REFERER'] ?? '';
$userObj = new User();
$userObj->setProperties($user);
$request->attributes->add(['user' => $userObj]);
return $next($request);
}
}
それで解決。