ホームページ PHPフレームワーク YII yii2 で rbac を実装する方法

yii2 で rbac を実装する方法

Dec 30, 2019 am 09:42 AM
yii2

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

クラウドネイティブ環境でYIIを使用するためのベストプラクティスは何ですか? クラウドネイティブ環境でYIIを使用するためのベストプラクティスは何ですか? Mar 18, 2025 pm 04:39 PM

この記事では、コンテナライゼーション、オーケストレーション、セキュリティ対策によるスケーラビリティ、信頼性、効率に焦点を当てたクラウドネイティブ環境でYIIアプリケーションを展開するためのベストプラクティスについて説明します。

サーバーレスアーキテクチャでYIIを使用するための重要な考慮事項は何ですか? サーバーレスアーキテクチャでYIIを使用するための重要な考慮事項は何ですか? Mar 18, 2025 pm 04:33 PM

この記事では、YIIをサーバーレスアーキテクチャで使用するための重要な考慮事項について説明し、ステートレス性、コールドスタート、機能サイズ、データベースの相互作用、セキュリティ、監視に焦点を当てています。また、最適化戦略と潜在的な統合をカバーしています

YIIアプリケーションをCodeceptionでテストするための最良の戦略は何ですか? YIIアプリケーションをCodeceptionでテストするための最良の戦略は何ですか? Mar 18, 2025 pm 04:27 PM

この記事では、組み込みモジュール、BDD、さまざまなテストタイプ、モッキング、CI統合、およびコードカバレッジを使用することに焦点を当てたCodeceptionを使用して、YIIアプリケーションをテストするための戦略について説明します。

Yiiの組み込みテストフレームワークの重要な機能は何ですか? Yiiの組み込みテストフレームワークの重要な機能は何ですか? Mar 18, 2025 pm 04:41 PM

YIIの組み込みテストフレームワークは、PHPunit統合、フィクスチャ管理、さまざまなテストタイプのサポートなどの機能を備えたアプリケーションテストを強化し、コードの品質と開発慣行を改善します。

YIIアプリケーションのパフォーマンスを監視およびプロファイリングするための最良のツールは何ですか? YIIアプリケーションのパフォーマンスを監視およびプロファイリングするための最良のツールは何ですか? Mar 17, 2025 pm 01:52 PM

この記事では、YIIデバッグツールバー、Blackfire、New Relic、XDebug、DataDogやDynatraceなどのAPMソリューションなど、YIIアプリケーションのパフォーマンスを監視およびプロファイリングするためのツールについて説明します。

YIIおよびWebSocketsとのリアルタイムデータの同期を実装する方法は? YIIおよびWebSocketsとのリアルタイムデータの同期を実装する方法は? Mar 18, 2025 pm 04:34 PM

この記事では、YIIとWebSocketsを使用したリアルタイムデータ同期の実装、パフォーマンスとセキュリティのためのセットアップ、統合、ベストプラクティスをカバーしています。

YIIアプリケーションを生産に展開するための重要な考慮事項は何ですか? YIIアプリケーションを生産に展開するための重要な考慮事項は何ですか? Mar 17, 2025 pm 01:58 PM

この記事では、YIIアプリケーションを生産に展開するための重要な考慮事項、環境のセットアップ、構成管理、パフォーマンスの最適化、セキュリティ、ロギング、監視、展開戦略、バックアップ/回復計画に焦点を当てています。

SaaSアプリケーションを構築するためにYIIを使用することの主な利点は何ですか? SaaSアプリケーションを構築するためにYIIを使用することの主な利点は何ですか? Mar 18, 2025 pm 04:25 PM

この記事では、SaaS開発に対するYiiの利点について説明し、パフォーマンス、セキュリティ、および迅速な開発機能に焦点を当てて、スケーラビリティを高め、市場からの時間を短縮します。

See all articles