Erişim Denetimini Yapılandırma
Nette Security için yapılandırma seçeneklerine genel bakış.
Framework'ün tamamını değil de yalnızca bu kütüphaneyi kullanıyorsanız, yapılandırmanın nasıl yükleneceğini okuyun.
Yapılandırmada, basit bir doğrulayıcı
(Nette\Security\SimpleAuthenticator) oluşturmak için bir kullanıcı listesi tanımlayabilirsiniz. Parolalar
yapılandırmada düz metin olarak listelendiğinden, bu çözüm yalnızca sınama amaçları için uygundur.
security:
# kullanıcı paneli Tracy Bar'da gösterilsin mi?
debugger: ... # (bool) varsayılan auto (Tracy etkinken açık)
users:
# ad: parola
johndoe: 'secret123'
# ad, parola, roller ve kimlikte kullanılabilen diğer veriler
janedoe:
password: 'secret123'
roles: [admin]
data: ...
Düz metin parola yerine onun hash'ini girebilirsiniz; otomatik tanınır. Hem parolalar hem hash'ler NEON'da özel anlamı olan karakterler içerebildiğinden, onları her zaman tırnak içine almanızı öneririz.
security:
users:
johndoe: '$2y$12$8aeofxuRALu4iNeaBHyLpuxf3xxKQdEreSaNLkQUiIfUmAv6cRHLa'
Ayrıca, bir yetkilendirici
(Nette\Security\Permission) için temel oluşturmak üzere roller ve kaynaklar tanımlayabilirsiniz:
security:
roles:
guest:
registered: [guest] # registered, guest'ten kalıtır
admin: [registered] # ve admin, registered'dan kalıtır
resources:
article:
comment: [article] # kaynak article'dan kalıtır
poll:
Ve son olarak erişim kuralları. Her kural bir rol, kaynak ve ayrıcalık üçlüsüdür; atlanan ya da
null olan bir öğe “hepsi” anlamına gelir, yalın bir dize ise role her şeyi verir veya yasaklar.
security:
rules:
allow:
- [guest, article, view] # rol, kaynak, ayrıcalık
- [registered, comment, [add, edit]] # liste, birden çok değer demektir
- [admin] # admin her şeyi yapabilir
deny:
- [banned, comment, add]
Bir callback ile doğrulanan koşullar (assertion) gibi daha karmaşık kurallara gereksiniminiz varsa, Yetkilendirme bölümünde gösterildiği gibi kendi yetkilendiricinizi
kaydedin. Bunu yaptığınızda rolleri, kaynakları ve kuralları burada değil o yetkilendiricide tanımlayın; aksi hâlde
birbiriyle yarışan iki Nette\Security\Permission servisiniz olur.
Kullanıcı Deposu
Giriş yapmış kullanıcı hakkındaki bilginin nasıl saklanacağını yapılandırabilirsiniz:
security:
authentication:
# kullanıcının bu süre boyunca etkinlik göstermemesi hâlinde oturumu kapatılır
expiration: 30 minutes # (string) varsayılan ayarlanmamış
# giriş yapmış kullanıcı hakkındaki bilginin nerede saklanacağı
storage: session # (session|cookie) varsayılan session
# kimlik, çıkıştan ve süre dolmasından sonra da kullanılabilir kalsın
persistIdentity: true # (bool) varsayılan true
Depo olarak cookie seçerseniz şu seçenekleri de ayarlayabilirsiniz:
security:
authentication:
# çerezin adı
cookieName: userId # (string) varsayılan userid
# çerezi alabilecek alan adları
cookieDomain: 'example.com' # (string|domain)
# çapraz kaynak erişimi için kısıtlama
cookieSamesite: None # (Strict|Lax|None) varsayılan Lax
DI Servisleri
DI container'a şu servisler eklenir:
| Ad | Tip | Açıklama |
|---|---|---|
security.authenticator |
Nette\Security\Authenticator | doğrulayıcı |
security.authorizator |
Nette\Security\Authorizator | yetkilendirici |
security.passwords |
Nette\Security\Passwords | parola hash'leme |
security.user |
Nette\Security\User | geçerli kullanıcı |
security.userStorage |
Nette\Security\UserStorage | depo |