Nette Documentation Preview

syntax
Erişim Denetimini Yapılandırma
******************************

.[perex]
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|bootstrap:] okuyun.

Yapılandırmada, [basit bir doğrulayıcı|authentication] (`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.

```neon
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 |passwords] 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. .{data-version:3.2.6}

```neon
security:
	users:
		johndoe: '$2y$12$8aeofxuRALu4iNeaBHyLpuxf3xxKQdEreSaNLkQUiIfUmAv6cRHLa'
```

Ayrıca, bir [yetkilendirici|authorization] (`Nette\Security\Permission`) için temel oluşturmak üzere roller ve kaynaklar tanımlayabilirsiniz:

```neon
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. .{data-version:3.2.6}

```neon
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 |authorization] 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:

```neon
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:

```neon
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`| [api:Nette\Security\Authenticator] | [doğrulayıcı |authentication]
| `security.authorizator` | [api:Nette\Security\Authorizator]  | [yetkilendirici |authorization]
| `security.passwords`    | [api:Nette\Security\Passwords]     | [parola hash'leme |passwords]
| `security.user`         | [api:Nette\Security\User]          | geçerli kullanıcı
| `security.userStorage`  | [api:Nette\Security\UserStorage]   | [depo |#Kullanıcı Deposu]

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