1

Zend\Permissions\AclZend の ACL ( ) を、静的ロール (のみ) に基づくだけでなく、(可変) ユーザー ポイントにも基づいて使用したいと考えています。

私のアプリケーションでは、すべてのユーザーがポイントを持っています。リソースには、それを表示するために必要な最小限のポイントがあります。リソースへのアクセスは、ユーザーが現在持っているポイント数に基づいている必要があります。

資力:

  • リソース 1: 20 ポイント
  • リソース 2: 100 ポイント
  • リソース 3: 150 ポイント

ユーザー:

  • ユーザー 1: 70 ポイント => リソース 1 へのアクセス
  • ユーザー 2: 135 ポイント => リソース 1、2 へのアクセス
  • ユーザー 3: 170 ポイント => リソース 1、2、3 へのアクセス

これを行う最良の方法は何ですか?

これまでの私の考え

  1. 現在ログインしているユーザーのポイントに基づいて動的に ACL オブジェクトを作成します (ポイントに$acl->allow()基づいてそれぞれ設定)。これはきれいではありません。
  2. 汎用 ACL を作成し、何らかの方法でユーザーのポイントを渡します (私はアサーションでそれを行うことができました。以下の私の回答を参照してください。)
  3. ここで提案されているいくつかの(おそらくより簡単でクリーンな)方法...

正しい方向にプッシュしていただければ幸いです:)

4

2 に答える 2

2

したがって、これは Zend だけの問題ではなく、一般的な ACL の操作についてです。

通常、ACL にアクセス権を実装するときは、個々のユーザーではなくグループに割り当てます。その後、グループからユーザーを簡単に (かつ動的に) 追加または削除できます。

Zend ACL では、これらのグループをロールと考えることができます。あなたの場合、特定の数のポイントを表すグループ (または役割) にリソースへのアクセス権を割り当てます。これで、ユーザーが獲得したポイントに基づいてこれらのグループ間でユーザーを移動することだけを心配する必要があります。

于 2013-05-28T18:55:39.273 に答える