アクセス制御の設定

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 保管場所
バージョン: 4.x