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

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









ルート権限は、Android システムの管理者権限です。 root 権限を取得するには、通常、一連の面倒な手順が必要ですが、これは一般ユーザーにとってはあまり使いやすいものではないかもしれません。この記事では、ワンクリックで root 権限を有効にすることで、ユーザーがシステム権限を簡単に取得できるシンプルかつ効果的な方法を紹介します。 root 権限の重要性とリスクを理解し、root 権限を使用すると、ユーザーは携帯電話システムを完全に制御できるようになります。セキュリティ管理を強化し、テーマをカスタマイズし、ユーザーはプリインストールされたアプリケーションを削除できます。ただし、たとえば、システム ファイルを誤って削除してシステム クラッシュを引き起こしたり、root 権限を過剰に使用したり、マルウェアを誤ってインストールしたりすることも危険です。 root権限を使用する前に

Huawei 携帯電話にデュアル WeChat ログインを実装するにはどうすればよいですか?ソーシャルメディアの台頭により、WeChatは人々の日常生活に欠かせないコミュニケーションツールの1つになりました。ただし、多くの人は、同じ携帯電話で同時に複数の WeChat アカウントにログインするという問題に遭遇する可能性があります。 Huawei 社の携帯電話ユーザーにとって、WeChat の二重ログインを実現することは難しくありませんが、この記事では Huawei 社の携帯電話で WeChat の二重ログインを実現する方法を紹介します。まず第一に、ファーウェイの携帯電話に付属するEMUIシステムは、デュアルアプリケーションを開くという非常に便利な機能を提供します。アプリケーションのデュアルオープン機能により、ユーザーは同時に

プログラミング言語 PHP は、さまざまなプログラミング ロジックやアルゴリズムをサポートできる、Web 開発用の強力なツールです。その中でも、フィボナッチ数列の実装は、一般的で古典的なプログラミングの問題です。この記事では、PHP プログラミング言語を使用してフィボナッチ数列を実装する方法を、具体的なコード例を添付して紹介します。フィボナッチ数列は、次のように定義される数学的数列です。数列の最初と 2 番目の要素は 1 で、3 番目の要素以降、各要素の値は前の 2 つの要素の合計に等しくなります。シーケンスの最初のいくつかの要素

Huawei 携帯電話に WeChat クローン機能を実装する方法 ソーシャル ソフトウェアの人気と人々のプライバシーとセキュリティの重視に伴い、WeChat クローン機能は徐々に人々の注目を集めるようになりました。 WeChat クローン機能を使用すると、ユーザーは同じ携帯電話で複数の WeChat アカウントに同時にログインできるため、管理と使用が容易になります。 Huawei携帯電話にWeChatクローン機能を実装するのは難しくなく、次の手順に従うだけです。ステップ 1: 携帯電話システムのバージョンと WeChat のバージョンが要件を満たしていることを確認する まず、Huawei 携帯電話システムのバージョンと WeChat アプリが最新バージョンに更新されていることを確認します。

【PHPにおけるミッドポイントの意味と使い方の分析】 PHPでは、ミッドポイント(.)は2つの文字列やオブジェクトのプロパティやメソッドを接続するためによく使われる演算子です。この記事では、PHP における中間点の意味と使用法を詳しく掘り下げ、具体的なコード例を示して説明します。 1. 文字列中間点演算子の接続 PHP での最も一般的な使用法は、2 つの文字列を接続することです。 2 つの文字列の間に . を置くと、それらをつなぎ合わせて新しい文字列を形成できます。 $string1=&qu

Discuz フォーラムの権限管理: 権限設定ガイドをお読みください。 Discuz フォーラム管理では、権限設定は重要な部分です。その中でも、読み取り権限の設定は、フォーラム内でさまざまなユーザーが表示できるコンテンツの範囲を決定するため、特に重要です。この記事では、Discuz フォーラムの読み取り許可設定と、さまざまなニーズに合わせて柔軟に設定する方法を詳しく紹介します。 1. 読み取り権限の基本概念 Discuz フォーラムでは、読み取り権限には主に次の概念が含まれており、理解する必要があります。 デフォルトの読み取り権限: 新規ユーザー登録後のデフォルト

今日のソフトウェア開発分野では、効率的で簡潔かつ同時実行性の高いプログラミング言語として、Golang (Go 言語) が開発者にますます好まれています。豊富な標準ライブラリと効率的な同時実行機能により、ゲーム開発の分野で注目を集めています。この記事では、ゲーム開発に Golang を使用する方法を検討し、具体的なコード例を通じてその強力な可能性を示します。 1. ゲーム開発における Golang の利点 Golang は静的型付け言語として、大規模なゲーム システムの構築に使用されます。

PHP ゲーム要件実装ガイド インターネットの普及と発展に伴い、Web ゲーム市場の人気はますます高まっています。多くの開発者は、PHP 言語を使用して独自の Web ゲームを開発することを望んでおり、ゲーム要件の実装は重要なステップです。この記事では、PHP 言語を使用して一般的なゲーム要件を実装する方法を紹介し、具体的なコード例を示します。 1. ゲームキャラクターの作成 Web ゲームにおいて、ゲームキャラクターは非常に重要な要素です。ゲームキャラクターの名前、レベル、経験値などの属性を定義し、これらを操作するメソッドを提供する必要があります。
