ホームページ >バックエンド開発 >PHPチュートリアル >Yii 権限階層型アクセス制御の実装 (非 RBAC 方式)_PHP チュートリアル

Yii 権限階層型アクセス制御の実装 (非 RBAC 方式)_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:29:46780ブラウズ

以下は、Xinyi Network Company でプロジェクトを開発する際に得た経験の一部です

主な参照: yii 公式ウェブサイト http://www.yiiframework.com/wiki/60/

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

パーミッション割り当てに関するファイルのほとんどはコントローラー内にあります。 UserController.php ファイルを開くと、2 つのクラス関数が表示されます。
public function filters()
アクセス制御

, );
, 'View'),
'users' = & gt; array ('*'), // *すべてのユーザーには、登録済み、未登録、一般、管理者レベルが含まれます


アクション '=> array(' create '、' update ')、ユーザーはadminを実行し、アクションを削除します'アクション '=> ', 'delete'), 'users' = & gt; array ('admin'), // Admin は、ユーザー名が admin で、ユーザー権限がハードコーディングされた形式で割り当てられているユーザーを指します。 '=>array ('*'), ),
); /1.1/CAccessControlFilter
さて、私たち自身のニーズに応じて、適切な権限の配布の設定を開始する必要があります。常識的に考えて、ハードコーディングされた制御を使用するのではなく、データベース内のユーザー テーブルのさまざまなレベルに応じてさまざまな権限を実装できることを期待しています。

デモ ブログに戻ると、まずデータベースの tbl_user テーブルを変更し、元のベースでロール項目を追加しました。元のユーザー情報レコードにロール値を「管理者」または「一般ユーザー」として追加します。

次に、次の 3 つのステップを順番に実行します:

1. CWebUser の拡張機能である WebUser コンポーネントを作成します。
2. config/main.php ファイルを変更します。

3. accessRules() を変更します。

具体的な詳細は次のとおりです:

1.WebUser.phpコンポーネントコード:



class WebUser extends CWebUser {
private $_model;

function getFirst_Name(){
$user = t;loadUser(Yii ::app()->user->id);
return $user->first_name;
}
function isAdmin(){
$user = $this->loadUser (Yii::app()->user->id);
if ($user==null)
return 0;
else
return $user->role == "管理者";
}
保護関数loadUser($id=null)
{
if($this->_model===null)
{
$id! ==null)
$this ->_model=User::model()->findByPk($id)
}
}
?>

2. config/main.php で次のコードを見つけて、赤でマークされたコードを追加します。
'components'=>array(

'user'=>array(

' 'class'=&g // Cookie ベースの認証を有効にする 'allowAutoLogin'=>true, t;'WebUser',

)、


3. 権限を変更する必要があるコントローラー クラスを見つけて、accessRules() 関数を変更します。たとえば、前の accessRules() 関数に次の変更を加えます: (
赤いコードに注意してください)。ipublic function accessRules(){

return配列(

配列( 'lock'、//すべてのユーザーがインデックス、ビューアクションを実行することを許可し、 'view')、
。 / 認証されたユーザーのみが作成、更新アクションを実行できるようにします。 '' Actions' = & gt ; Array ('Create', 'Update'),
'users' = & gt ;array('@'), ' action'=>array('admin','delete'),
'expression'=>'yii::app()->user->isAdmin()',// ここはこうですは識別情報にすぎません。「管理者」であるユーザーのみが管理者にアクセスし、アクションを削除できます
), ) ;
この記事は、成都のウェブサイト構築を専門とする信義ネットワークによって公開されています。yii の詳細については、信義ネットワークの今後のリリースにご注意ください。
http://www.bkjia.com/PHPjc/769339.html
www.bkjia.com
tru​​ehttp://www.bkjia.com/PHPjc/769339.html
技術記事
以下は、Xinyi Network Company でのプロジェクト開発の経験に基づいた主な参考資料の一部です: yii 公式 Web サイト http://www.yiiframework.com/wiki/60/ yii フレームワークは 2 セットの権限を提供します...

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