thinkphp で権限認(rèn)証を使用する方法
May 26, 2023 pm 02:36 PMインターネットの継続的な発展に伴い、Web サイトのユーザー數(shù)は増加しており、ユーザーデータの管理とセキュリティを確保するために、権限認(rèn)証はすべての Web サイトで不可欠な機(jī)能の 1 つとなっています。 PHPフレームワークの中でもThinkPHPは非常に人気のあるフレームワークであり、権限認(rèn)証機(jī)能も充実しています。そこで、この記事では、ThinkPHP がどのように権限認(rèn)証を使用するかを詳しく紹介します。
1. 権限認(rèn)証の役割
権限認(rèn)証は主に、さまざまな役割のユーザーの権限を制御して、ユーザーがアクセス権限を持つリソースにのみアクセスでき、それらのリソースを使用できないようにすることです。自分たちの権限を超えて。たとえば、電子商取引 Web サイトでは、管理者はすべての商品情報(bào)を表示および管理できますが、一般ユーザーは商品情報(bào)を閲覧することしかできず、変更や削除はできません。
2. 権限認(rèn)証の実裝方法
ThinkPHP フレームワークは、権限認(rèn)証を?qū)g裝する 2 つの方法、RBAC とノードベースの権限認(rèn)証を提供します。 RBAC (Role-Based Access Control)、つまり役割ベースのアクセス制御では、さまざまなユーザーを役割に応じて分類します。ノードベースの権限認(rèn)証は、ノードを介して権限を制御します。ノードは、コントローラ、操作メソッドなどになります。
- RBAC
フレームワークで RBAC を介して権限認(rèn)証を?qū)g裝するには、ThinkPHPLibraryThink にある Auth クラスを使用する必要があります。具體的な手順は以下のとおりです。
(1) ノードテーブルとロールテーブルを作成し、権限ノードとロールを関連付けます。ノード テーブルを作成すると、コントローラーと操作メソッドに対応できます。ロール テーブルには、以下に示すように、ロール名と対応するノード ID が保存されます:
ノード テーブル (think_node):
id | name | module | controller | action | pid |
---|---|---|---|---|---|
1 | index | ホーム | index | index | 0 |
2 | add | home | index | add | 1 |
3 | edit | ホーム | index | edit | 1 |
4 | 削除 | ホーム | #インデックス | 削除 | 1 |
ロール テーブル (think_role):
name | node_ids | |
---|---|---|
管理者 | 1、2、3、4 | |
ユーザー | 1 |
{
public function __construct() { parent::__construct(); //實(shí)例化Auth類 $auth = new ThinkAuth(); //獲取當(dāng)前用戶的角色I(xiàn)D $uid = session('user_id'); //獲取當(dāng)前請(qǐng)求的控制器和方法 $url = MODULE_NAME . '/' . CONTROLLER_NAME . '/' . ACTION_NAME; //進(jìn)行權(quán)限認(rèn)證 if (!$auth->check($url, $uid)) { $this->error('您沒有訪問該頁面的權(quán)限!'); } }
}
ノードベースの権限認(rèn)証
- ノードベースの権限認(rèn)証は、フレームワークによって提供される Access クラスを使用して実裝できます。このクラスも ThinkPHPLibraryThink にあります。
{
public function __construct() { parent::__construct(); //實(shí)例化Access類 $access = new ThinkAccess(); //獲取當(dāng)前用戶的角色I(xiàn)D $uid = session('user_id'); //獲取當(dāng)前請(qǐng)求的控制器和方法 $url = MODULE_NAME . '/' . CONTROLLER_NAME . '/' . ACTION_NAME; //定義權(quán)限節(jié)點(diǎn)列表 $nodes = array( 'Index/index',//首頁 'Index/add',//添加頁面 'Index/edit',//編輯頁面 'Index/delete',//刪除操作 ); //進(jìn)行權(quán)限認(rèn)證 if (!$access->check($nodes, $uid, $url)) { $this->error('您沒有訪問該頁面的權(quán)限!'); } }
}
パブリック コントローラーの確立
- フレームワークの Common モジュールにパブリック コントローラー BaseController を作成し、権限検証ロジックを配置できます。この制御は容器內(nèi)で行われます。他のコントローラーがこのコントローラーを継承した後、コードのこの部分を再利用できます。
ノード情報(bào)のキャッシュ
- 権限認(rèn)証では、ノード テーブルとロール テーブルを毎回クエリする必要があるため、システムのパフォーマンスに影響します。したがって、クエリ結(jié)果をキャッシュしてシステムのパフォーマンスを向上させることができます。フレームワークが提供するキャッシュ クラスを使用してクエリ結(jié)果をキャッシュし、次回クエリを?qū)g行するときに、キャッシュされた結(jié)果を直接取得できます。
暗號(hào)化されたノード情報(bào)
- セキュリティを向上させるために、ノード情報(bào)を暗號(hào)化して、ノード情報(bào)が直接公開されるのを避けることができます。フレームワークが提供する暗號(hào)化クラスを使用して、ノード ID を暗號(hào)化し、暗號(hào)化されたノード情報(bào)をロール テーブルに保存できます。
以上がthinkphp で権限認(rèn)証を使用する方法の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語 Web サイトの他の関連記事を參照してください。

ホットAIツール

Undress AI Tool
脫衣畫像を無料で

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

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

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

人気の記事

ホットツール

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

SublimeText3 中國(guó)語版
中國(guó)語版、とても使いやすい

ゼンドスタジオ 13.0.1
強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

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

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