---
title: "Konfigurácia — Auth for Laravel | Roundly"
description: "Každý globálny aj guardový kľúč a jeho predvolená hodnota — spôsoby prihlásenia, 2FA, passkeys, tokeny, registrácia, limity a ďalšie."
url: https://roundly-consulting.com/sk/open-source/navody/auth-for-laravel/konfiguracia
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)

# Konfigurácia

Všetko je v config/authentication.php. Kľúče najvyššej úrovne sú globálne. Všetko pod defaults platí pre každý guard a dá sa prepísať v guards.<name> — asociatívne polia sa zlučujú rekurzívne, zoznamy sa nahrádzajú celé (identifier.columns = \['username'\] nahradí \['email'\], nezlučuje sa podľa indexu).

```bash
php artisan vendor:publish --tag=authentication-config
```

```php
'guards' => [
    'users' => ['model' => App\Models\User::class],
    'clients' => [
        'model' => App\Models\Client::class,
        'login' => ['password' => false, 'magic_link' => true, 'passkey' => true],
        'two_factor' => ['mode' => 'off'],
        'passkeys' => ['mode' => 'optional', 'second_factor' => 'off'],
        'registration' => ['mode' => 'open'],
        'routes' => ['enabled' => true, 'prefix' => 'clients/auth'],
    ],
],
```

Každý guard je izolovaný: vlastný model a tabuľka, vlastná JWT audience, vlastný typ vlastníka refresh tokenov, vlastné kľúče limitov, vlastné záznamy aktivity a vlastné routy. Dva guardy nemôžu zdieľať model (rola v jednej tabuľke je autorizácia, nie guard) ani audience.

## Globálne kľúče

| Kľúč | Predvolené | Env | Účel |
| --- | --- | --- | --- |
| `default` | users | AUTHENTICATION\_GUARD | Guard, ktorý použije Authentication::guard() bez názvu. |
| `key_type` | bigint | AUTHENTICATION\_KEY\_TYPE | Typ primárneho kľúča všetkých modelov guardov (bigint, uuid, ulid — prázdna hodnota ponechá bigint, iná hodnota vyhodí InvalidConfigurationException); musí sa zhodovať s passkeys.key\_type a refresh-tokens.key\_type. |
| `hash_key` | odvodený z APP\_KEY | AUTHENTICATION\_HASH\_KEY | HMAC kľúč pre odkazy, kódy, tokeny výziev, odtlačky a kľúče limitov; jeho rotácia zneplatní všetky nevyužité tajomstvá. |
| `tables.*` | auth\_\* | AUTHENTICATION\_\*\_TABLE | Názvy tabuliek: challenges, one\_time\_tokens, invitations, login\_activities. |
| `models.*` | modely balíka | — | Vymeniteľné modely — trieda balíka alebo jej podtrieda; akákoľvek iná trieda vyhodí InvalidConfigurationException s názvom kľúča. |
| `columns.*` | rovnaké názvy | — | Názvy stĺpcov v tabuľke každého guardu (token\_version, locale, timezone, password, password\_changed\_at, email\_verified\_at, last\_login\_at, disabled\_at, disabled\_reason, locked\_until, failed\_login\_count). |
| `reauthentication_store` | predvolený store | AUTHENTICATION\_REAUTH\_STORE | Cache store pre značky „nedávno opätovne overený“. |

## Kľúče guardu (defaults.\*)

Každý prepínač zapnuté/vypnuté prijíma bežné zápisy z env — true/false, 1/0, on/off, yes/no — takže AUTHENTICATION\_LOGIN\_PASSWORD=off prihlásenie heslom naozaj vypne. Kľúč, ktorý nie je nastavený — chýba, je null alebo je prázdny (prázdny reťazec či medzery, čo dá riadok KEY= v .env) —, sa číta ako uvedená predvolená hodnota; čokoľvek iné (preklep ako disabled) vyhodí pri načítaní guardu AuthenticationMisconfigured s názvom kľúča a authentication:check ho vypíše. Rovnako striktné sú aj dvojhodnotové reťazcové kľúče (identifier.normalize, risk.deny\_response) a kľúče režimov (two\_factor.mode, registration.mode, notifications.delivery, …): prázdna hodnota použije predvolenú hodnotu balíka, preklep vyhodí výnimku.

| Kľúč | Predvolené | Účel |
| --- | --- | --- |
| `model` | — (povinné) | Model guardu: class-string<Model&Account>. |
| `laravel_guard` | názov guardu | Záznam v auth.guards (jwt guard), cez ktorý sa guard overuje. |
| `identifier.columns` | \['email'\] | Stĺpce akceptované ako prihlasovací identifikátor, skúšané v poradí. |
| `identifier.email_column` | email | Stĺpec s e-mailovou adresou — sem HasAuthentication smeruje aj e-maily (routeNotificationForMail()). |
| `identifier.normalize` | lowercase | lowercase alebo none; e-maily sa ukladajú aj vyhľadávajú normalizované (vždy v Unicode zloženom tvare, NFC). |
| `identifier.case_insensitive_lookup` | false | lower(col) = ? pre staré záznamy so zmiešanou veľkosťou písmen (nevyužije index). |
| `login.password / .magic_link / .email_otp / .passkey` | true / false / false / false | Zapnuté spôsoby prihlásenia (env AUTHENTICATION\_LOGIN\_\*). |
| `login.reveal_account_state` | true | Kódy pre deaktivovaný/neoverený účet po overenom prvom faktore; false z nich spraví invalid\_credentials. |
| `challenge.ttl / .enrolment_ttl` | 300 / 900 | Platnosť výzvy v sekundách (dlhšia, kým čaká krok nastavenia faktora). |
| `challenge.max_attempts` | 5 | Počet neúspešných krokov, po ktorých výzva zanikne (pokus sa započíta ešte pred overením kódu; platný kód ho vráti). |
| `challenge.allow_enrolment` | true | Povoliť vynútené nastavenie faktora vo výzve. |
| `challenge.enrolment_requires_verified_email` | true | …len pre overené adresy. |
| `challenge.bind.user_agent / .ip / .device_header` | true / false / true | Viazanie výzvy na zariadenie. |
| `challenge.max_active_per_account` | 3 | Staršie aktívne výzvy sa nahradia. |
| `two_factor.mode` | optional | off, optional alebo required (env AUTHENTICATION\_TWO\_FACTOR). |
| `two_factor.after_email_login` | true | Aj prihlásenie magic linkom, e-mailovým kódom a pozvánkou vyžaduje druhý faktor; false ich vyníma len z pravidiel druhého faktora — nikdy nie z dodatočného overenia pri riziku ani z registrácie passkey, ktorú vyžaduje passkeys.mode = required (registrácia nie je výnimkou nikdy). |
| `two_factor.required_with_passkey` | false | Pri required si aj prihlásenie passkey vynúti nastavenie TOTP. |
| `two_factor.passkey_satisfies_required` | true | Passkey ako druhý faktor splní required. |
| `two_factor.issuer` | null | otpauth issuer pre guard (null → issuer z two-factor alebo názov aplikácie). |
| `two_factor.qr.enabled / .size` | true / 240 | QR kód na nastavenie TOTP. |
| `passkeys.mode` | optional | off, optional alebo required — registrácia pri každom prihlásení bez passkey, aj e-mailovom (env AUTHENTICATION\_PASSKEYS). |
| `passkeys.second_factor` | allowed | off, allowed, required\_when\_enrolled alebo required (pri passkeys.mode off len off alebo allowed). |
| `passkeys.satisfies_mfa` | true | Prihlásenie passkey bez hesla s overením používateľa už nevyžaduje ďalší faktor (overenie používateľa sa potom vynúti pri každom ceremoniáli) — ani pri dodatočnom overení kvôli riziku; pri false si dodatočné overenie vyžiada TOTP. |
| `tokens.access_ttl` | null | Sekundy; null → jwt.ttl. |
| `tokens.refresh_ttl / .refresh_absolute_ttl` | 30 / 90 dní | Posuvná a absolútna platnosť refresh tokenu (0 = bez limitu). |
| `tokens.claims_resolver` | DefaultClaimsResolver | Implementácia ResolvesAccessTokenClaims. |
| `tokens.include_email` | true | Pridá claimy email a email\_verified. |
| `sessions.max_active` | null | Nad limitom sa zrušia najstaršie relácie. |
| `invalidation.*` | others / all / others / others / none | password\_changed, password\_reset, email\_changed, two\_factor\_changed, passkey\_changed → none, others alebo all (deaktivácia, odhlásenie všade a incidenty sú vždy all). |
| `registration.mode` | closed | open, invite\_only alebo closed (env AUTHENTICATION\_REGISTRATION); closed odmietne aj prijatie pozvánky — na registráciu len cez pozvánky použite invite\_only. |
| `registration.require_password` | true | Vyžadovať heslo, ak je zapnuté prihlásenie heslom. |
| `registration.login_after` | true | Prihlásiť hneď po registrácii. |
| `registration.rules` | null | ProvidesRegistrationRules pre vlastné polia (ku creatoru sa dostanú len tieto kľúče). |
| `registration.creator` | CreateAccount | Implementácia CreatesAccounts. |
| `invitations.enabled` | false | Pozvánky (invite\_only ich vyžaduje); kým sú vypnuté, každé volanie invitations() vyhodí LoginMethodDisabled (404 method\_disabled). |
| `invitations.ttl` | 7 dní | Platnosť pozvánky. |
| `invitations.lock_email` | true | Pozvaný musí použiť pozvanú adresu. |
| `invitations.replace_pending` | true | Nová pozvánka zruší čakajúcu pozvánku pre tú istú adresu. |
| `invitations.allow_existing_email` | false | Pozývať adresy, ktoré už majú účet. |
| `invitations.resend_cooldown / .max_sends` | 60 / 5 | Limity opätovného odoslania — počítajú len odoslané e-maily (send: false a link() sa nerátajú). |
| `invitations.preview_payload_keys` | \[\] | Kľúče payloadu, ktoré zobrazí endpoint náhľadu. |
| `invitations.ability` | authentication.invitations.manage | Gate ability pre routy správy pozvánok. |
| `verification.mode` | optional | off, optional, required\_for\_actions alebo required\_for\_login (env AUTHENTICATION\_VERIFICATION). |
| `verification.channel` | link | link alebo code. |
| `verification.ttl / .code_length / .max_attempts` | 1 deň / 6 / 5 | Tajomstvá overenia. |
| `verification.resend_decay` | 60 | Pauza medzi opätovnými odoslaniami pre účet v sekundách. |
| `verification.verify_on_email_login` | true | Prihlásenie magic linkom alebo e-mailovým kódom adresu overí. |
| `email_change.enabled / .ttl / .notify_old / .require_reauthentication` | true / 1 h / true / true | Overená zmena e-mailu (require\_reauthentication = false vypne jej bránu; inak rozhoduje required\_for). |
| `magic_link.ttl / .same_device` | 15 min / false | Magic linky (same\_device ich viaže na žiadajúce zariadenie). |
| `email_otp.ttl / .length / .max_attempts` | 10 min / 6 / 5 | E-mailové kódy (aj kódy opätovného overenia). |
| `passwords.reset.enabled / .ttl / .login_after` | true / 1 h / false | Obnova hesla. |
| `passwords.change.enabled` | true | Endpoint na zmenu hesla. |
| `passwords.rehash_on_login` | true | Pri prihlásení prehašovať zastarané hashe. |
| `passwords.policy.min / .max` | 10 / 128 | Dĺžka (pri bcrypt vynútené max. 72 bajtov). |
| `passwords.policy.letters / .mixed_case / .numbers / .symbols` | false | Pravidlá zloženia. |
| `passwords.policy.not_identifier` | true | Nesmie obsahovať lokálnu časť e-mailu. |
| `passwords.policy.uncompromised.*` | false / 0 / 3 / false | Kontrola uniknutých hesiel: enabled, threshold, timeout, fail\_closed (env AUTHENTICATION\_PASSWORD\_BREACH\_CHECK). |
| `throttle.<kind>.max / .decay` | viď konfiguráciu | Desať limitov — viď Aktivita a riziko. |
| `lockout.enabled / .threshold / .duration / .reset_unlocks` | false / 10 / 900 / true | Voliteľné tvrdé uzamknutie. |
| `reauthentication.timeout` | 900 | Ako dlho platí opätovné overenie, v sekundách; authentication.reauthenticated:N na route použije namiesto neho vlastné okno. |
| `reauthentication.methods` | všetkých päť | Povolené metódy. |
| `reauthentication.require_second_factor_when_enrolled` | true | Účty s druhým faktorom ho musia použiť — pri opätovnom overení aj na to, aby bránu splnilo opätovné overenie či čerstvé prihlásenie (podľa faktorov, ktoré účet má práve teraz). |
| `reauthentication.fresh_login_counts` | true | Prihlásenie v rámci okna sa započíta — pri účte s druhým faktorom len prihlásenie, ktoré ho použilo (amr obsahuje mfa alebo hwk). |
| `reauthentication.required_for` | všetkých osem akcií | Hodnoty SensitiveAction, ktoré vyžadujú nedávne opätovné overenie. |
| `activity.enabled / .store_identifier / .retention_days` | true / plain / 90 | Záznam prihlasovacej aktivity (plain, hash alebo none). |
| `activity.new_device.enabled / .header / .skip_first_login` | true / X-Device-Id / true | Detekcia nového zariadenia. |
| `risk.assessor / .reactions.elevated / .reactions.high / .deny_response` | null / notify / require\_second\_factor / uniform | Háčiky na hodnotenie rizika (allow, notify, require\_second\_factor, deny); dodatočné overenie platí pre každý spôsob prihlásenia a účet bez faktora, ktorým by sa overil, zamietne. |
| `locale.header / .supported / .store_on_registration / .fill_on_login / .timezone` | X-Locale / \[app.locale\] / true / true / true | Jazyk a časové pásmo. |
| `notifications.delivery / .connection / .queue` | after\_response / null / null | sync, after\_response alebo queue (env AUTHENTICATION\_NOTIFICATION\_\*). |
| `notifications.classes.*` | triedy balíka | 20 tried notifikácií; null jednu vypne. |
| `notifications.frontend_url` | app.url | {frontend} v šablónach URL (env AUTHENTICATION\_FRONTEND\_URL). |
| `notifications.urls.*` | {frontend}/auth/…?guard={guard}#token={token} | Šablóny odkazov v e-mailoch (env AUTHENTICATION\_URL\_\*). |
| `routes.enabled / .prefix / .name` | false / {guard}/auth / authentication.{guard}. | Voliteľné routy; prefix aj name sú pre každý guard jedinečné (pri kolízii registrácia vyhodí výnimku). |
| `routes.middleware / .authenticated_middleware / .invitations_management` | \['api'\] / \[\] / false | Middleware rout a routy správy pozvánok. |
| `resources.account` | AccountResource | Resource pre me. |

## Striktné čítanie

Rovnako striktne sa čítajú aj všetky ostatné kľúče a kontrolujú sa pri načítaní guardu:

- Celé čísla (platnosti, limity pokusov, limity požiadaviek, dĺžky) prijímajú int alebo kanonický reťazec s celým číslom, takže five či 1.5 vyhodí výnimku, namiesto toho, aby sa prečítala ako predvolená (prázdna hodnota sa považuje za nenastavenú, takže platí predvolená) — a rovnako aj hodnota mimo rozsahu: platnosti a limity najmenej 1, email\_otp.length a verification.code\_length 6–8, pokusy o kód 1–100, passwords.policy.max najmenej policy.min.
- 0 sa prijme len tam, kde má význam: tokens.refresh\_absolute\_ttl (bez limitu), invitations.resend\_cooldown, verification.resend\_decay a passwords.policy.uncompromised.threshold. tokens.access\_ttl a sessions.max\_active sú null alebo prázdne (TTL z jwt / bez limitu) alebo najmenej 1.
- Reťazcové kľúče s predvolenou hodnotou (identifier.email\_column, invitations.ability, activity.new\_device.header, routes.prefix, routes.name, každá šablóna notifications.urls.\*) vyhodia výnimku, ak nie sú reťazcom, a prázdnu hodnotu čítajú ako nenastavenú → predvolená hodnota; voliteľné (laravel\_guard, two\_factor.issuer, fronty, frontend\_url, class-stringy) vyhodia výnimku, ak nie sú reťazcom, a prázdnu hodnotu čítajú ako nenastavenú → bez hodnoty.
- Zoznamové kľúče (identifier.columns, routes.middleware, locale.supported …) musia byť zoznamy neprázdnych reťazcov — chybná položka vyhodí výnimku, nikdy sa potichu nevynechá.

Globálne názvy tables.\* a columns.\* vyhodia výnimku, ak nie sú reťazcom, a prázdnu hodnotu čítajú ako nenastavenú → názov z balíka; default číta prázdnu hodnotu ako users; hash\_key a reauthentication\_store vyhodia výnimku, ak nie sú reťazcom (prázdna hodnota je nenastavená → odvodený kľúč / predvolený store).

## Prostredie (env)

Bežné prepínače sú riadené cez env (prepínače zapnuté/vypnuté sa čítajú ako boolean):

```bash
AUTHENTICATION_GUARD=users
AUTHENTICATION_KEY_TYPE=bigint
AUTHENTICATION_HASH_KEY=
AUTHENTICATION_USERS_MODEL=App\Models\User

# on/off switches accept true/false, 1/0, on/off, yes/no
AUTHENTICATION_LOGIN_PASSWORD=true
AUTHENTICATION_LOGIN_MAGIC_LINK=off
AUTHENTICATION_LOGIN_EMAIL_OTP=off
AUTHENTICATION_LOGIN_PASSKEY=off

AUTHENTICATION_TWO_FACTOR=optional
AUTHENTICATION_PASSKEYS=optional
AUTHENTICATION_REGISTRATION=closed
AUTHENTICATION_VERIFICATION=optional
AUTHENTICATION_PASSWORD_BREACH_CHECK=false

AUTHENTICATION_NOTIFICATION_DELIVERY=after_response
AUTHENTICATION_FRONTEND_URL=https://app.example.com
```

## Validácia

Guard sa validuje pri prvom použití — prvý problém vyhodí AuthenticationMisconfigured s názvom kľúča a php artisan authentication:check vypíše všetky naraz (aj hodnotu nesprávneho typu — diagnostika kvôli nej nikdy nespadne a nezakryje ostatné). Pravidlá zahŕňajú:

- Model existuje, je to Eloquent model a implementuje Account.
- Zapnuté 2FA vyžaduje TwoFactorAuthenticatable; zapnuté passkeys (alebo prihlásenie passkey) vyžadujú HasPasskeys.
- Vypnuté passkeys vyžadujú vypnuté prihlásenie passkey a passkeys.second\_factor off alebo allowed (allowed krok s passkey len povoľuje, takže AUTHENTICATION\_PASSKEYS=off funguje s predvolenou konfiguráciou balíka).
- Aspoň jeden spôsob prihlásenia je zapnutý; invite\_only vyžaduje invitations.enabled.
- Vynútené nastavenie faktora s enrolment\_requires\_verified\_email vyžaduje verification.mode iné ako off.
- laravel\_guard je jwt guard, ktorého token\_version je TokenVersionResolver.
- authentication.key\_type sa zhoduje s passkeys.key\_type aj refresh-tokens.key\_type a zodpovedá mu kľúč modelu.
- Pri viacerých guardoch: odlišné laravel\_guardy, morph triedy modelov aj JWT audience. Odlišné routes.prefix a routes.name sa vynucujú pri registrácii rout — guard, ktorý použije prefix či názov iného guardu, vyhodí AuthenticationMisconfigured s názvami oboch.
- Každý prepínač, enum, celé číslo, reťazec aj zoznam sa načíta bez chyby (pozrite Striktné čítanie vyššie), takže preklep zlyhá už pri načítaní guardu — nikdy nie uprostred toku.

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