Автентифікація в Laravel тримається на двох поняттях з config/auth.php.
- Гард визначає, як користувача впізнають у запиті:
session- за сесією й cookie,sanctum- ще й за токеном у заголовку. - Провайдер визначає, звідки користувача беруть: зазвичай Eloquent-модель
Userчи таблиця бази.
'guards' => [
'web' => ['driver' => 'session', 'provider' => 'users'],
'admin' => ['driver' => 'session', 'provider' => 'admins'],
],
'providers' => [
'users' => ['driver' => 'eloquent', 'model' => App\Models\User::class],
'admins' => ['driver' => 'eloquent', 'model' => App\Models\Admin::class],
],
Коли другий гард виправданий: коли це справді інші люди в іншій таблиці - адміністратори окремо від клієнтів, з окремим входом і сесією.
Route::middleware('auth:admin')->group(fn () => /* ... */);
Auth::guard('admin')->attempt($credentials);
Коли не потрібен: якщо різниця лише в правах. «Адмін - теж користувач, але з роллю» - це авторизація (ролі, політики), а не другий гард. Зайвий гард подвоює логіку входу, скидання пароля й верифікації пошти.