私はSymfony2を使用しています。ユーザとロールはすでに自分のDBに保存されています。Symfony2の "access_control"情報をデータベースに保存する方法は?
access_control:
- { path: ^/admin, role: ROLE_ADMIN}
- { path: ^/users, role: ROLE_MANAGER}
しかし、私は、データベース内のこのACCESS_CONTROL情報を保存したいと思いますので、私のシステムからのユーザーは、管理インタフェースを使用してアクセス許可自体を変更することができます:私はsecurity.yml
に以下のようなものを設定した場合、それは素晴らしい作品。
ACLとFOSUserBundleを見ましたが、解決策が見つかりませんでした。私はif ($user->hasRole($role))
のようなものでパーミッションをチェックできることがわかりましたが、私はすべてのコントローラでこれを行う必要があります。
ダイナミックな「access_control」機能を定義する方法はありますか? access_controlをtrueまたはfalseを返す可能性のあるクラスにリダイレクトするようなものかもしれません。 どのような解決策ですか?
ありがとう、それは完璧に働いた! –
私はそれを得ていませんでした。役割階層にDB_ROLE_CHECKロールを配置する必要があるところ、投票者のルートをチェックする方法は?たとえば、[ルート、役割]のようなDBエントリがあります。そして、access_controlルール^ /:DB_ROLE_CHECK、そうですか?したがって、すべてのリクエストに対してDBVoterが実行されます。 $属性では、私は役割、そして$トークンを持ちます。そして、私は$ subject paramとしてルートかパスを持っていますか?ですから、DBレコードをパスで取得し、decisionManagerの$ tokenから$ userを使ってロールを使用する必要があります。 –