Auth::attempt() перевіряє облікові дані й, якщо вони правильні, відкриває сесію.
public function login(LoginRequest $request): RedirectResponse
{
if (! Auth::attempt($request->only('email', 'password'), $request->boolean('remember'))) {
throw ValidationException::withMessages(['email' => __('auth.failed')]);
}
$request->session()->regenerate();
return redirect()->intended('/dashboard');
}
Покроково:
- Провайдер гарда шукає користувача за всіма полями, крім пароля.
- Пароль порівнюється з хешем через
Hash::check()- відкритий пароль ніде не зберігається й не порівнюється напряму. - При успіху ID користувача записується в сесію, і наступні запити бачать його через
auth()->user().
Що робиться після входу:
session()->regenerate()- новий ідентифікатор сесії, щоб підкинутий заздалегідь не дав зловмиснику увійти разом з жертвою (session fixation).redirect()->intended()- повертає туди, куди користувач ішов до перенаправлення на логін.
Додаткові умови передають тим самим масивом: Auth::attempt([...$credentials, 'is_active' => true]) не пустить вимкнений акаунт. У стартових наборах Laravel 13 усе це вже зроблено пакетом Fortify.