Nette Documentation Preview

syntax
アクセス制御の設定
*********

.[perex]
Nette Security の設定オプションの一覧です。

フレームワーク全体ではなくこのライブラリだけを使っているなら、[設定の読み込み方|bootstrap:]をご覧ください。

設定では利用者の一覧を定めて、[単純な認証器|authentication](`Nette\Security\SimpleAuthenticator`)を作れます。パスワードが設定に平文で並ぶので、この解は試しの用途にだけ向いています。

```neon
security:
	# Tracy Bar に利用者のパネルを表示しますか
	debugger: ...  # (bool) 既定は auto(Tracy が動いていればオン)

	users:
		# 名前: パスワード
		johndoe: 'secret123'

		# 名前、パスワード、ロール、そして身元で使えるそのほかのデータ
		janedoe:
			password: 'secret123'
			roles: [admin]
			data: ...
```

平文のパスワードの代わりに、その[ハッシュ |passwords]も書けます。自動的に見分けられます。パスワードもハッシュも NEON で特別な意味を持つ文字を含みうるので、いつも引用符で囲むことをおすすめします。 .{data-version:3.2.6}

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

さらにロールと資源を定めて、[認可器|authorization](`Nette\Security\Permission`)の土台を作れます。

```neon
security:
	roles:
		guest:
		registered: [guest]  # registered は guest を継承します
		admin: [registered]  # そして admin は registered を継承します

	resources:
		article:
		comment: [article]   # 資源は article を継承します
		poll:
```

そして最後にアクセスの決まりです。それぞれの決まりはロール、資源、権限の 3 つ組です。省いた項目や `null` の項目は「すべて」を意味し、裸の文字列はそのロールにすべてを許すか禁じます。 .{data-version:3.2.6}

```neon
security:
	rules:
		allow:
			- [guest, article, view]              # ロール、資源、権限
			- [registered, comment, [add, edit]]  # 並びは複数の値を意味します
			- [admin]                             # admin は何でもできます
		deny:
			- [banned, comment, add]
```

コールバックで確かめる条件(アサーション)のような、もっと込み入った決まりが必要なら、[認可 |authorization]で示すように自分の認可器を登録してください。そうする場合は、ロール、資源、決まりをここではなくその認可器で定めてください。さもないと `Nette\Security\Permission` のサービスが 2 つ競い合うことになります。


利用者の保管場所
--------

ログインした利用者の情報をどう保管するかを設定できます。

```neon
security:
	authentication:
		# 利用者がログアウトさせられるまでの無操作の時間
		expiration: 30 minutes        # (string) 既定では未設定

		# ログインした利用者の情報をどこに保管するか
		storage: session              # (session|cookie) 既定は session

		# ログアウトと期限切れのあとも身元を残しますか
		persistIdentity: true         # (bool) 既定は true
```

保管場所に `cookie` を選んだ場合は、次のオプションも設定できます。

```neon
security:
	authentication:
		# クッキーの名前
		cookieName: userId            # (string) 既定は userid

		# クッキーを受け取れるドメイン
		cookieDomain: 'example.com'   # (string|domain)

		# 別オリジンからのアクセスの制限
		cookieSamesite: None          # (Strict|Lax|None) 既定は Lax
```


DI のサービス
--------

DI コンテナには次のサービスが足されます。

| 名前                     | 型                                  | 説明
|-------------------------|------------------------------------|---------------------------
| `security.authenticator`| [api:Nette\Security\Authenticator] | [認証器 |authentication]
| `security.authorizator` | [api:Nette\Security\Authorizator]  | [認可器 |authorization]
| `security.passwords`    | [api:Nette\Security\Passwords]     | [パスワードのハッシュ化 |passwords]
| `security.user`         | [api:Nette\Security\User]          | 今の利用者
| `security.userStorage`  | [api:Nette\Security\UserStorage]   | [保管場所 |#利用者の保管場所]

アクセス制御の設定

Nette Security の設定オプションの一覧です。

フレームワーク全体ではなくこのライブラリだけを使っているなら、設定の読み込み方をご覧ください。

設定では利用者の一覧を定めて、単純な認証器Nette\Security\SimpleAuthenticator)を作れます。パスワードが設定に平文で並ぶので、この解は試しの用途にだけ向いています。

security:
	# Tracy Bar に利用者のパネルを表示しますか
	debugger: ...  # (bool) 既定は auto(Tracy が動いていればオン)

	users:
		# 名前: パスワード
		johndoe: 'secret123'

		# 名前、パスワード、ロール、そして身元で使えるそのほかのデータ
		janedoe:
			password: 'secret123'
			roles: [admin]
			data: ...

平文のパスワードの代わりに、そのハッシュも書けます。自動的に見分けられます。パスワードもハッシュも NEON で特別な意味を持つ文字を含みうるので、いつも引用符で囲むことをおすすめします。

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

さらにロールと資源を定めて、認可器Nette\Security\Permission)の土台を作れます。

security:
	roles:
		guest:
		registered: [guest]  # registered は guest を継承します
		admin: [registered]  # そして admin は registered を継承します

	resources:
		article:
		comment: [article]   # 資源は article を継承します
		poll:

そして最後にアクセスの決まりです。それぞれの決まりはロール、資源、権限の 3 つ組です。省いた項目や null の項目は「すべて」を意味し、裸の文字列はそのロールにすべてを許すか禁じます。

security:
	rules:
		allow:
			- [guest, article, view]              # ロール、資源、権限
			- [registered, comment, [add, edit]]  # 並びは複数の値を意味します
			- [admin]                             # admin は何でもできます
		deny:
			- [banned, comment, add]

コールバックで確かめる条件(アサーション)のような、もっと込み入った決まりが必要なら、認可で示すように自分の認可器を登録してください。そうする場合は、ロール、資源、決まりをここではなくその認可器で定めてください。さもないと Nette\Security\Permission のサービスが 2 つ競い合うことになります。

利用者の保管場所

ログインした利用者の情報をどう保管するかを設定できます。

security:
	authentication:
		# 利用者がログアウトさせられるまでの無操作の時間
		expiration: 30 minutes        # (string) 既定では未設定

		# ログインした利用者の情報をどこに保管するか
		storage: session              # (session|cookie) 既定は session

		# ログアウトと期限切れのあとも身元を残しますか
		persistIdentity: true         # (bool) 既定は true

保管場所に cookie を選んだ場合は、次のオプションも設定できます。

security:
	authentication:
		# クッキーの名前
		cookieName: userId            # (string) 既定は userid

		# クッキーを受け取れるドメイン
		cookieDomain: 'example.com'   # (string|domain)

		# 別オリジンからのアクセスの制限
		cookieSamesite: None          # (Strict|Lax|None) 既定は Lax

DI のサービス

DI コンテナには次のサービスが足されます。

名前 説明
security.authenticator Nette\Security\Authenticator 認証器
security.authorizator Nette\Security\Authorizator 認可器
security.passwords Nette\Security\Passwords パスワードのハッシュ化
security.user Nette\Security\User 今の利用者
security.userStorage Nette\Security\UserStorage 保管場所