2
4

1 に答える 1

1

これは、属性ベースのアクセス制御の良い例です。ただし、PHP の実装を見ても構わない場合は、Zend Framework には、アサーションを使用してより特殊なケースを解決する役割ベースのアクセス制御があります。

http://framework.zend.com/manual/en/zend.acl.advanced.html

標準ルールでは、ロールがリソースに対してアクションを実行できます。4 番目のパラメーターを使用すると、特定の条件が満たされた場合にのみルールを適用できます。擬似コード:

allow(member, view, page) // standard
allow(member, view, page, userLivesInMoscow) // assertion used

アサーションは、ユーザーに渡されるオブジェクトです。アサーションが満たされているかどうかを確認するメソッドがあります。

interface Assertion
 bool public function assert()

class UserLivesIn implements Assertion
 public function UserLivesIn(User, City) ...
 // implementation of assert method comes here

これは、必要なものを実装する方法です。

于 2010-05-15T14:46:48.580 に答える