Konfigurace přístupových oprávnění
Přehled konfiguračních voleb pro Nette Security.
Pokud nepoužíváte celý framework, ale jen tuto knihovnu, přečtěte si, jak konfiguraci načíst.
V konfiguraci lze definovat seznam uživatelů, a tak vytvořit jednoduchý authenticator
(Nette\Security\SimpleAuthenticator). Protože se v konfiguraci uvádějí hesla v čitelné podobě, je tohle
řešení vhodné pouze pro testovací účely.
security:
# zobrazit panel uživatele v Tracy Bar?
debugger: ... # (bool) výchozí je auto (zapnuto, když je aktivní Tracy)
users:
# jméno: heslo
frantisek: 'tajneheslo'
# jméno, heslo, role a další data dostupná v identitě
dobrota:
password: 'tajneheslo'
roles: [admin]
data: ...
Místo hesla v čitelné podobě můžete uvést jeho hash, rozpozná se automaticky. Protože hesla i hashe mohou obsahovat znaky se speciálním významem v NEONu, doporučujeme je vždy uzavírat do uvozovek.
security:
users:
frantisek: '$2y$12$8aeofxuRALu4iNeaBHyLpuxf3xxKQdEreSaNLkQUiIfUmAv6cRHLa'
Dále lze definovat role a zdroje a vytvořit tak základ pro autorizátor (Nette\Security\Permission):
security:
roles:
guest:
registered: [guest] # registered dědí od guest
admin: [registered] # a od něj dědí admin
resources:
article:
comment: [article] # zdroj dědí od article
poll:
A nakonec přístupová pravidla. Každé pravidlo je trojice role, zdroj a oprávnění; vynechaná
položka nebo null znamená „všechny“ a samotný řetězec roli vše povolí nebo zakáže.
security:
rules:
allow:
- [guest, article, view] # role, zdroj, oprávnění
- [registered, comment, [add, edit]] # seznam znamená více hodnot
- [admin] # admin smí všechno
deny:
- [banned, comment, add]
Pokud potřebujete složitější pravidla, třeba podmínky ověřované callbackem (assertions), zaregistrujte si vlastní
autorizátor podle kapitoly Autorizace. Když to uděláte,
definujte role, zdroje i pravidla přímo v tomto autorizátoru, ne zde, jinak byste skončili se dvěma konkurenčními
službami Nette\Security\Permission.
Úložiště
Lze konfigurovat, jak uchovávat informace o přihlášeném uživateli:
security:
authentication:
# po jak dlouhé době nečinnosti bude uživatel odhlášen
expiration: 30 minutes # (string) výchozí je nenastaveno
# kam ukládat informace o přihlášeném uživateli
storage: session # (session|cookie) výchozí je session
# zachovat identitu i po odhlášení a expiraci
persistIdentity: true # (bool) výchozí je true
Pokud zvolíte jako úložiště cookie, můžete nastavit ještě tyto volby:
security:
authentication:
# jméno cookie
cookieName: userId # (string) výchozí je userid
# domény, které přijímají cookie
cookieDomain: 'example.com' # (string|domain)
# omezení při přístupu z jiné domény
cookieSamesite: None # (Strict|Lax|None) výchozí je Lax
Služby DI
Tyto služby se přidávají do DI kontejneru:
| Název | Typ | Popis |
|---|---|---|
security.authenticator |
Nette\Security\Authenticator | autentikátor |
security.authorizator |
Nette\Security\Authorizator | autorizátor |
security.passwords |
Nette\Security\Passwords | hashování hesel |
security.user |
Nette\Security\User | aktuální uživatel |
security.userStorage |
Nette\Security\UserStorage | úložiště |