RBAC (ロールベースのアクセス制御) ロールベースのアクセス制御。
1. 基本的な考え方: ユーザーとアクセス許可の間にロールの概念を導入し、ユーザーとロールを接続し、ロールの承認を通じてシステム リソースへのユーザー アクセスを制御します。 、ロールの導入により、アクセス許可の管理が大幅に簡素化されます。 (推奨学習: yii フレームワーク )
1). 役割: 権限と権限の集合として理解できます。たとえば、フォーラム システムでは、「スーパー管理者」と「モデレーター」が役割です。
2).権限: モデレーターは、フォーラムの投稿、フォーラムのユーザーなどを管理できます。これらは権限です。
Yii2 での rbac の実装
1.Yii2 は一般的な階層型 RBAC を実装しており、それが従うモデルは NIST RBAC モデルでもあります。
2. yii2 ではルールという概念が追加されました。
例: 記事システムの場合、管理者と一般ユーザーがおり、管理者は記事に対してあらゆる操作を実行できますが、記事を作成したり、作成した記事を変更したりできるのは一般ユーザーのみです。一般のユーザーは記事を修正する権限を持っていますが、Extra では自分の記事しか修正できないという制約があり、この Extra の検証がルールの役割となります。
3. yii2 の権限管理実装は、file と db の 2 つのキャリアをサポートします。db ベースの実装の中核は 4 つのテーブルです:
1) ストレージ ロールまたは権限テーブル: auth_item (タイプ: 1 はロールを表し、2 は権限を表します)
CREATE TABLE `auth_item` ( `name` varchar(64) NOT NULL, `type` int(11) NOT NULL, `description` text, `rule_name` varchar(64) DEFAULT NULL, `data` text, `created_at` int(11) DEFAULT NULL, `updated_at` int(11) DEFAULT NULL, PRIMARY KEY (`name`), KEY `rule_name` (`rule_name`), KEY `type` (`type`), CONSTRAINT `auth_item_ibfk_1` FOREIGN KEY (`rule_name`) REFERENCES `auth_rule` (`name`) ON DELETE SET NULL ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8
2) 権限とロールの上位と下位の関連付けテーブル: auth_item_child
(関係が含まれます: ロールにはロールを含めることができ、ロールには権限を含めることができ、権限には権限を含めることができますが、権限にロールを含めることはできません)
CREATE TABLE `auth_item_child` ( `parent` varchar(64) NOT NULL, `child` varchar(64) NOT NULL, PRIMARY KEY (`parent`,`child`), KEY `child` (`child`), CONSTRAINT `auth_item_child_ibfk_1` FOREIGN KEY (`parent`) REFERENCES `auth_item` (`name`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `auth_item_child_ibfk_2` FOREIGN KEY (`child`) REFERENCES `auth_item` (`name`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8
3) ユーザーと権限 (ロール) の割り当てテーブル: auth_assignment
CREATE TABLE `auth_assignment` ( `item_name` varchar(64) NOT NULL, `user_id` varchar(64) NOT NULL, `created_at` int(11) DEFAULT NULL, PRIMARY KEY (`item_name`,`user_id`), CONSTRAINT `auth_assignment_ibfk_1` FOREIGN KEY (`item_name`) REFERENCES `auth_item` (`name`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8
4) ルール テーブル: auth_rule
CREATE TABLE `auth_rule` ( `name` varchar(64) NOT NULL, `data` text, //存的是一个序列化的实现了yii\rbac\Rule接口的类的一个对象实例 `created_at` int(11) DEFAULT NULL, `updated_at` int(11) DEFAULT NULL, PRIMARY KEY (`name`), KEY `name` (`name`), KEY `created_at` (`created_at`), KEY `updated_at` (`updated_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权限规则表';
以上がyii2 で rbac を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。