Symfonyのアクセスコントロールにカスタムアクセス法則を追加する必要があります。私は説明しようとしています。 私はいくつかの顧客とWebアプリケーションを持っており、その顧客が適切なプラグインを持っているときに、コードの一部をアクセスできるようにしたい。プラグインsymfonyセキュリティでダイナミックセキュリティ権限を取得する方法
namespace AppBundle\Entity;
class Plugin{
private $id;
private $name;
private $customerProfiles;
}
私は彼のプラグインを取得することができ、顧客からのように、私は関係のための教義を使用するための
namespace AppBundle\Entity;
class CustomerProfile{
private $id;
private $user;
private $plugins;
}
エンティティ:これは私の顧客です。たとえば、私たちは2顧客と2プラグインを持っている:私のプロジェクトで
AppBundle\Entity\CustomerProfile:
customer_1:
user: '@user_1'
plugins: ['@plugin_1','@plugin_2']
customer_2:
user: '@user_2'
plugins: ['@plugin_1']
AppBundle\Entity\Plugin:
plugin_1:
name: 'plugin 1'
plugin_2:
name: 'plugin 2'
の顧客に関するすべてのコードは、/顧客の名前空間、symfonyのような、そしてすべての作業中です。別のプラグインと
access_control:
- { path: ^/customer, roles: ROLE_CUSTOMER }
しかし、この顧客のための私は、動のアクセス制御を設定するだろうが、私は方法がわかりません。私はこのような何かを制御する必要があります:
access_control:
- { path: ^/code_for_plugin_1, roles: ROLE_CUSTOMER_WHIT_PLUGIN_1}
- { path: ^/code_for_plugin_2, roles: ROLE_CUSTOMER_WHIT_PLUGIN_2}
を、私は良い方法は、その名前空間でのアクセスに役割をプラグイン持っている顧客ごとに設定するには、「サブ役割」(存在する場合)に設定されていると思います。
私は十分に助けてくれてありがとうと思います。
おそらく有権者が必要です。 http://symfony.com/doc/current/security/voters.html –
プラグインに基づいて動的に割り当てられたロールを返すために、単に「CustomerProfile :: getRoles」を実装することもできます。 –
私は既にその文書を読んでいます、私は正しい道が叶うと思います。私は実際には私は5-6のプラグイン(これは将来的には浮かび上がるでしょう)と多くの顧客を持っているので、getRolesのログインは良くないと思うので、私はそれぞれの組み合わせに対して異なるROLEを作成したくありませんプラグイン、それは醜く効率的ではないでしょう。 – NicolaPez