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
versiyon: 4.x