Web MVC アプリケーションにアクセス制御リストを実装するにはどうすればよいですか?また、ユーザーのロールベースのアクセスを処理するにはどうすればよいですか?
ACL の実装
デコレーター パターンは、ACL を実装せずに ACL を実装する効果的な方法です。コントローラークラスを拡張します。方法は次のとおりです:
class SecureContainer { protected $target; protected $acl; public function __construct($target, $acl) { $this->target = $target; $this->acl = $acl; } public function __call($method, $arguments) { if (method_exists($this->target, $method) && $this->acl->isAllowed(get_class($this->target), $method)) { return call_user_func_array([$this->target, $method], $arguments); } } }
これは次のように使用できます:
$currentUser = ...; $controller = ...; $acl = new AccessControlList($currentUser); $controller = new SecureContainer($controller, $acl); $controller->actionIndex(); // ACL-protected controller methods
ユーザーの役割ベースのアクセス
役割ベースのアクセスの場合、次の点を考慮してください:
の所有者の確認リソース:
例:
$this->acl->isAllowed( $this->target->getPermissions(), // Get object permissions [$getter, $method] // Command );
アクセスの強制制限事項:
に関する追加メモMVC:
以上がWeb MVC アプリケーションにアクセス制御リスト (ACL) とロールベースのアクセスを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。