---
title: "Opätovné overenie — Auth for Laravel | Roundly"
description: "„Sudo režim“ pred citlivými akciami — dostupné metódy, pravidlo sily druhého faktora, chránené akcie a middleware pre routy."
url: https://roundly-consulting.com/sk/open-source/navody/auth-for-laravel/opatovne-overenie
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Auth for Laravel](https://roundly-consulting.com/sk/open-source/navody/auth-for-laravel.md)

# Opätovné overenie

Prihlásený účet sa pred citlivými akciami znova preukáže. Potom jeho relácia platí ako nedávno overená počas reauthentication.timeout sekúnd (predvolene 900). Značka je v cache podľa guardu a relácie a zaznamenáva, ako sa relácia preukázala — nielen kedy. Uchováva sa tak dlho, ako je dlhšia z hodnôt timeout a tokens.refresh\_ttl, takže ju nájde aj routa s dlhším oknom; každá kontrola porovnáva čas dôkazu so svojím vlastným oknom.

```php
'reauthentication' => [
    'timeout' => 900,
    'methods' => ['password', 'totp', 'recovery_code', 'passkey', 'email_otp'],
    'require_second_factor_when_enrolled' => true,  // 2FA/passkey accounts must reauth with totp|recovery_code|passkey
    'fresh_login_counts' => true,                   // auth_time within timeout satisfies the check
    'required_for' => ['enable_two_factor', 'disable_two_factor', 'regenerate_recovery_codes',
        'register_passkey', 'remove_passkey', 'change_email', 'set_password', 'logout_everywhere'],
],
```

## Dostupné metódy

| Metóda | Ponúkne sa, keď |
| --- | --- |
| `password` | Účet má heslo — a pri require\_second\_factor\_when\_enrolled nemá TOTP ani passkey. |
| `totp, recovery_code` | 2FA režim nie je off a účet má zapnuté TOTP. |
| `passkey` | Režim passkeys nie je off a účet má passkey. |
| `email_otp` | Účty bez hesla, bez TOTP aj passkey, s e-mailovou adresou. |

Ukradnutá relácia spolu s uniknutým heslom preto nedokáže vypnúť faktor, ktorý účet chráni.

## Opätovné overenie

Z PHP podkontext reauthentication() vypíše metódy účtu, potvrdí overenie a stráži váš vlastný kód — ensureRecent() a ensureFor() vyhodia ReauthenticationRequired. sendCode() pošle kód účtu bez hesla a passkeyOptions() spustí passkey ceremoniál:

```php
use RoundlyConsulting\Auth\DataTransferObjects\ReauthenticationData;
use RoundlyConsulting\Auth\Enums\ReauthenticationMethod;
use RoundlyConsulting\Auth\Enums\SensitiveAction;
use RoundlyConsulting\Auth\Facades\Authentication;

$guard   = Authentication::guard('users');
$reauth  = $guard->reauthentication();
$current = $guard->tokenFrom($request);

$reauth->methods($user);                        // what this account may re-authenticate with

$until = $reauth->confirm($user, new ReauthenticationData(
    method: ReauthenticationMethod::Totp,
    current: $current,
    context: $guard->contextFrom($request),
    code: $request->input('code'),
));

// Gate your own sensitive code:
$reauth->ensureRecent($user, $current, seconds: 300);
$reauth->ensureFor(SensitiveAction::ChangeEmail, $user, $current);
```

Opätovné overenie je obmedzené na reláciu; uzamknutý účet dostane account\_locked (423). Cez HTTP: POST reauthenticate s method a heslom, kódom alebo credential odpovie confirmed s confirmed\_until; POST reauthenticate/passkey/options spustí passkey ceremoniál; POST reauthenticate/otp pošle kód účtom bez hesla.

reauthentication.methods sa overuje voči faktoru, ktorý sa skutočne zhodoval: záložný kód poslaný ako totp, keď recovery\_code nie je povolené, sa odmietne s factor\_not\_allowed (422), započíta sa ako nesprávny dôkaz a nezanechá značku — kód je však spotrebovaný, preto RecoveryCodeUsed aj tak nastane. Opätovné overenie nikdy nespraví zariadenie známym pre detekciu nových zariadení: stačí naň totiž (možno ukradnutý) prístupový token.

## Ochrana vašich rout

```php
Route::delete('/account', DeleteAccount::class)
    ->middleware(['auth:users', 'authentication.guard:users', 'authentication.reauthenticated:300']);
```

Kontrola prejde, ak čerstvé prihlásenie (auth\_time v rámci okna, pri fresh\_login\_counts) alebo nedávne opätovné overenie spĺňa požiadavku účtu v čase kontroly. Účet, ktorý má teraz TOTP alebo passkey, potrebuje dôkaz druhým faktorom: opätovné overenie cez totp, recovery\_code či passkey, alebo prihlásenie, ktorého amr obsahuje mfa alebo hwk. Inak odpovie 403 reauthentication\_required so zoznamom dostupných metód. Parameter sekúnd nahradí timeout, dlhší aj kratší: authentication.reauthenticated:3600 pri predvolenom timeoute 900 s prijme 20 minút staré opätovné overenie presne tak ako 20 minút staré prihlásenie (vrátené confirmed\_until ostáva teraz + timeout).

## Citlivé akcie

| SensitiveAction | Chránený endpoint |
| --- | --- |
| `enable_two_factor` | `POST two-factor` |
| `disable_two_factor` | `DELETE two-factor` |
| `regenerate_recovery_codes` | `POST two-factor/recovery-codes` |
| `register_passkey` | `POST passkeys/options, POST passkeys` |
| `remove_passkey` | `DELETE passkeys/{passkey}` |
| `change_email` | POST email/change — len kým je email\_change.require\_reauthentication true (ensureFor() sa riadi tým istým prepínačom) |
| `logout_everywhere` | `POST logout/everywhere` |
| `set_password` | PUT password pre účet bez hesla |

Odstránením položky zrušíte bránu pre danú akciu — pre jeden guard alebo pre všetky. Ide o zoznam, preto zoznam guardu nahradí predvolený zoznam celý:

```php
// config/authentication.php — this guard lets a passwordless account set a first password
// without re-authenticating; everything else stays gated.
'guards' => [
    'users' => [
        'reauthentication' => [
            'required_for' => ['enable_two_factor', 'disable_two_factor', 'regenerate_recovery_codes',
                'register_passkey', 'remove_passkey', 'change_email', 'logout_everywhere'],
        ],
    ],
],
```

## Obmedzenia

- Okno je časové: každý dôkaz platí timeout sekúnd — alebo vlastné okno routy reauthenticated:N — na relácii, ktorá ho poskytla. Kde na tom záleží, držte ho krátke.
- Pri require\_second\_factor\_when\_enrolled = false splní bránu akýkoľvek zaznamenaný dôkaz bez ohľadu na faktory účtu.

## 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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/auth-for-laravel.md)
