yii2 で rbac を実装する方法

(*-*)浩
リリース: 2019-12-30 09:42:08
オリジナル
1960 人が閲覧しました

yii2 で rbac を実装する方法

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!