Spôsoby prihlásenia
Štyri primárne spôsoby, každý zapínateľný pre konkrétny guard. Aspoň jeden musí byť zapnutý:
'guards' => [
'users' => [
'model' => App\Models\User::class,
'login' => [
'password' => true,
'magic_link' => true,
'email_otp' => true,
'passkey' => true, // passwordless
'reveal_account_state' => true, // disabled/unverified codes only after a verified first factor
],
'magic_link' => ['ttl' => 900, 'same_device' => false],
'email_otp' => ['ttl' => 600, 'length' => 6, 'max_attempts' => 5],
],
],$guard = Authentication::guard('users');
$context = $guard->contextFrom($request);
// Password
$result = $guard->attempt(new PasswordCredentials('[email protected]', $password), $context);
// Magic link: the request never reveals whether the address exists
$guard->requestMagicLink('[email protected]', $context);
$result = $guard->consumeMagicLink($token, $context);
// Email code
$guard->requestEmailOtp('[email protected]', $context);
$result = $guard->verifyEmailOtp('[email protected]', $code, $context);
// Passwordless passkey (discoverable credentials)
$options = $guard->passkeyLoginOptions($context); // for navigator.credentials.get()
$result = $guard->loginWithPasskey($assertion, $context); // passkeys' AuthenticationResponseDataHeslo
Limity login, login_ip a login_account sa overia ešte pred hašovaním. Neznáme účty a účty bez hesla sa overujú voči fiktívnemu hashu s rovnakou náročnosťou, takže čas odpovede neprezradí, či účet existuje. Neúspech zaťaží všetky tri limity, zvýši voliteľné počítadlo uzamknutia a vráti invalid_credentials.
Magic link
Skutočný aktívny účet dostane 64-znakový odkaz s tajomstvom vo fragmente URL; požiadavka vždy odpovie 202 sent. Pri použití musí adresa odkazu stále patriť účtu. S magic_link.same_device sa pred uplatnením overí odtlačok žiadajúceho zariadenia, takže nezhoda odkaz nespotrebuje.
E-mailový kód
Rovnaká logika žiadosti ako pri magic linku. Overenie prechádza tromi prihlasovacími limitmi (hádanie kódu je pokus o prihlásenie), nikdy neprezradí attempts_left a viaže kód na jeho adresu.
Passkey
Options sú discoverable — bez identifikátora a bez allowCredentials. S passkeys.satisfies_mfa vyžadujú overenie používateľa, vynútené pre daný ceremoniál. Id ceremoniálu sa musí vrátiť spolu s assertion, credential iného guardu sa odmietne a každý neúspech je jednotné invalid_credentials.
Čím prejde každé prihlásenie
- Dôsledky vlastníctva — prihlásenie magic linkom alebo e-mailovým kódom overí adresu (verification.verify_on_email_login).
- Stav účtu — deaktivovaný vráti account_disabled (alebo invalid_credentials pri vypnutom reveal_account_state); uzamknutý vráti too_many_attempts; neoverený pri required_for_login vráti email_not_verified.
- Údržba hesla — prehašovanie, vynulovanie počítadla uzamknutia, vyčistenie prihlasovacieho limitu.
- Doplnenie jazyka, ak ho účet nemá, a detekcia nového zariadenia.
- Riziko — nastavená reakcia môže upozorniť, vyžiadať druhý faktor alebo prihlásenie zamietnuť, a to pri akomkoľvek spôsobe prihlásenia.
- Potrebné kroky — buď výzva, alebo úspešné dokončenie: tokeny, last_login_at, aktivita, LoginSucceeded a TokensIssued.
Referencie metód overenia
Prístupové tokeny nesú amr (RFC 8176). Dokončená výzva pridá svoje faktory a mfa:
| Primárny spôsob | amr |
|---|---|
| Heslo | pwd |
| Magic link | |
| E-mailový kód | otp |
| Passkey | hwk, user (+ mfa, ak bolo vyžadované overenie používateľa) |
| Pozvánka | email (žiadne pri neoverenej zvolenej adrese) |
| Obnova hesla | |
| Registrácia | pwd alebo žiadne |
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.