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