Как использовать Auth::user() в middleware Laravel при использовании sanctum?
Всем привет! Подскажите, использую sanctum для авторизации, решил добавить свою middleware, которая должна проверять Auth::user() Однако при таком вызове:
Route::middleware('auth:sanctum')->middleware('activated')->group(function () {
Route::get('/name', function (Request $request) {
return response()->json(['user' => auth()->user()]);
});
});
Auth::user() внутри activated возвращает null;
Однако, если использовать эту middleware к конкретному маршруту, а не к группе - всё работает:
Route::middleware('auth:sanctum')->group(function () {
Route::get('/name', function (Request $request) {
return response()->json(['user' => auth()->user()]);
})->middleware('activated');
});
Но это неудобно, ведь маршрутов могут быть сотни. Сколько я понимаю, проблема в порядке вызова middleware.
Пробовал в Http/Kernel.php делать так:
protected $middlewarePriority = [
\App\Http\Middleware\Authenticate::class,
\App\Http\Middleware\CheckUserActivation::class
];
Не даёт положительного эффекта.
Как запустить activated после auth:sanctum, чтобы иметь внутри неё Auth::user()?
Ответы (1 шт):
Автор решения: CCHECKED
→ Ссылка
Попробуйте
Route::middleware(['auth:sanctum', 'activated'])->group(function () {
Route::get('/name', function (Request $request) {
return response()->json([
'user' => auth()->user()
]);
});
});
И проверьте зарегистрирован ли middleware в app\Http\Kernel.php