NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Two-Factor for Laravel

Overovanie pri prihlásení

Po overení hesla skontrolujte kód, ktorý používateľ zadá. TwoFactor::for($user)->attempt() prijme TOTP kód aj záložný kód a vráti VerificationResult:

use RoundlyConsulting\TwoFactor\Exceptions\TwoFactorRateLimitedException;
use RoundlyConsulting\TwoFactor\Facades\TwoFactor;

try {
    $result = TwoFactor::for($user)->attempt($request->string('code')->toString());
} catch (TwoFactorRateLimitedException $e) {
    // too many failed attempts — retry after $e->secondsUntilAvailable seconds
}

if ($result->verified) {
    // accepted — TOTP (replay-safe) or a single-use recovery code
}

Ako používateľ overením prešiel

Výsledok prezradí, či kód prešiel, akou metódou a koľko záložných kódov ešte zostáva:

use RoundlyConsulting\TwoFactor\Enums\TwoFactorMethod;
use RoundlyConsulting\TwoFactor\Facades\TwoFactor;

$result = TwoFactor::for($user)->attempt($request->string('code')->toString());

$result->verified;               // bool — TOTP (replay-safe) or a single-use recovery code
$result->method;                 // TwoFactorMethod::Totp | ::RecoveryCode | null on failure
$result->remainingRecoveryCodes; // int, after this attempt — "1 recovery code left"
$result->replayed;               // true when a valid code's timestep was already used

if ($result->method === TwoFactorMethod::RecoveryCode) {
    // e.g. notify the user, add 'recovery_code' to an amr claim
}
VlastnosťTypVýznam
verifiedboolKód prešiel — TOTP (odolný voči opakovaniu) alebo jednorazový záložný kód.
method?TwoFactorMethodTotp alebo RecoveryCode; null, ak overenie neprešlo.
remainingRecoveryCodesintPočet záložných kódov, ktoré zostávajú po tomto pokuse.
replayedboolPlatný TOTP kód, ktorého časový krok už bol použitý.

Počet zostávajúcich kódov po použití záložného kódu sa číta z riadku uzamknutého počas spotreby, takže je správny aj pri súbehu dvoch požiadaviek.

Poradie kontrol

  • Používateľ bez potvrdenej aktivácie zlyhá okamžite — čakajúca aktivácia nikdy nie je platný druhý faktor.
  • Pokus sa najprv započíta do vstavaného limitera, jedným atomickým zvýšením. Po prekročení attempts.max sa vyhodí TwoFactorRateLimitedException ešte pred akýmkoľvek overovaním.
  • TOTP kód sa overí v rámci tolerancie posunu; pri zhode sa jeho časový krok atomicky zaberie. Už zabratý krok znamená opakovanie — výsledok má replayed: true a vyvolá sa TwoFactorReplayDetected.
  • Inak sa kód skúsi ako jednorazový záložný kód — normalizovaný tak, ako ho ľudia píšu — a pri zhode sa spotrebuje.
  • Úspech vynuluje počítadlo limitera a vyvolá TwoFactorVerified. Zlyhanie aj opakovanie zostávajú započítané; skutočné zlyhanie navyše vyvolá TwoFactorVerificationFailed.

Priamo z modelu používateľa

Dve skratky traitu spúšťajú to isté attempt(): jedna vráti výsledok, druhá len bool:

$result = $user->attemptTwoFactorCode($code);  // → VerificationResult (== TwoFactor::for($user)->attempt())
$ok     = $user->verifyTwoFactorCode($code);   // bool (== ->attempt($code)->verified)

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 kryptomien

Odoslaní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.