Yii 権限階層型アクセス制御の実装の詳細な分析 (非 RBAC メソッド)_PHP チュートリアル

WBOY
リリース: 2016-07-21 15:07:16
オリジナル
802 人が閲覧しました

Yii フレームワークは 2 セットのパーミッション アクセス システムを提供します。1 つは単純なフィルター モード、もう 1 つは複雑で包括的な RBAC モードです。ここで説明したいのは、最初のセットです (これはちょうど学んだばかりなので)。 YII の公式デモ ブログを学習したことがある方なら、たとえば、gii によって自動生成されるユーザー モジュールには簡単なフィルター権限割り当て機能が付属していることをご存知のはずです。詳細については、ブログの「ユーザー認証」の章を参照してください。マニュアル、および yii 公式ガイドの「認証と認可」の章。 (ここで参照するモジュールは、ユーザー関連ファイルの単なる個人的な総称であり、Yii ファイルシステムのモジュールとは異なる意味を持つことに注意してください。)
パーミッション割り当てに関連するファイルのほとんどは、コントローラー内にあります。 UserController.php ファイルを開くと、2 つのクラス関数が表示されます。

コードをコピーします。 如 コードは次のとおりです: Public Function Filters () { Return Array }
public function accessRules() //アクセス ルールの設定です。 Array(gt; array( '*')、< span></span> 'action' => array( 'create'、 'update')、 'users' => array( ' @')、 @ @ @ @

)、
配列( 'lock'、//ユーザー名が管理者のユーザーになることのみを許可します。 :
}


アクセス ルールの設定の詳細については、公式ドキュメント http://www.yiiframework.com/doc/api/1.1/CAccessControlFilter を参照してください。
さて、ここで、独自のニーズに応じて適切な権限の配布の設定を開始する必要があります。常識的に考えて、ハードコーディングされた制御を使用するのではなく、データベース内のユーザー テーブルのさまざまなレベルに応じてさまざまな権限を実装できることを期待しています。

デモ ブログに戻ると、まずデータベースの tbl_user テーブルを変更し、元のベースにロール項目を追加しました。元のユーザー情報レコードにロール値を「管理者」または「一般ユーザー」として追加します。
次に、次の 3 つの手順を順番に実行します。
1. CWebUser の拡張であるコンポーネント WebUser を作成します。
2. config/main.php ファイルを変更します。
3. accessRules() を変更します。
具体的な詳細は次のとおりです:
1.WebUser.php コンポーネント コード:
コードをコピーします コードは次のとおりです:


//このファイルは次の場所に保存する必要があります。
// protected/components/WebUser.php

class WebUser extends CWebUser {

// クエリを繰り返さないようにモデルを保存します。
private $_model // 名を返します。 / Yii::app()->user->first_name でアクセスします
function getFirst_Name(){
$user = $this->loadUser(Yii::app()->user->id) ;
return $user-> ;first_name;
}

// これは、User モデルのフィールド 'role' が 1 に等しいことを確認する関数です
// これは管理者であることを意味します
// によってアクセスしますYii::app()->user->isAdmin()
function isAdmin(){
$user = $this->loadUser(Yii::app()->user->id); if($ user == null)return 0; 2. config/main.php で次のコードを見つけて、赤でマークされたコードを追加します。



コードをコピーします

コードは次のとおりです:


'components'=>array(
'user'=>array(
) >true,
' class'=>'WebUser ',
),


3. 権限を変更する必要があるコントローラー クラスを見つけて、accessRules() 関数を変更します。たとえば、前の accessRules() 関数に次の変更を加えます。



コードをコピーします。
コードは次のとおりです:

public function accessRules() //アクセスルールの設定です。 {
,,, >array( '*'), //* 番号は登録済み、未登録、一般、管理者レベルを含むすべてのユーザーを識別します
),
array('allow', , // ユーザーのみを許可します。 admin のユーザーとなる名前、アクション
' アクション '= & gt; array (' admin ',' delete ')、
' 式 '= & gt;' :: app ()- & gt; & gt; isadmin () ',
// これは admin にのみアクセスできるユーザーです、アクションを削除します
),
array (' deeny ', // すべてのアクセスを拒否します。 '=>array('*') 、
)、
);


仕事は終わりました!




http://www.bkjia.com/PHPjc/327563.html
www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/327563.html

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