インターネットの継続的な発展に伴い、Web サイトのユーザー数は増加しており、ユーザーデータの管理とセキュリティを確保するために、権限認証はすべての Web サイトで不可欠な機能の 1 つとなっています。 PHPフレームワークの中でもThinkPHPは非常に人気のあるフレームワークであり、権限認証機能も充実しています。そこで、この記事では、ThinkPHP がどのように権限認証を使用するかを詳しく紹介します。
1. 権限認証の役割
権限認証は主に、さまざまな役割のユーザーの権限を制御して、ユーザーがアクセス権限を持つリソースにのみアクセスでき、それらのリソースを使用できないようにすることです。自分たちの権限を超えて。たとえば、電子商取引 Web サイトでは、管理者はすべての商品情報を表示および管理できますが、一般ユーザーは商品情報を閲覧することしかできず、変更や削除はできません。
2. 権限認証の実装方法
ThinkPHP フレームワークは、権限認証を実装する 2 つの方法、RBAC とノードベースの権限認証を提供します。 RBAC (Role-Based Access Control)、つまり役割ベースのアクセス制御では、さまざまなユーザーを役割に応じて分類します。ノードベースの権限認証は、ノードを介して権限を制御します。ノードは、コントローラ、操作メソッドなどになります。
- RBAC
フレームワークで RBAC を介して権限認証を実装するには、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(); //实例化Auth类 $auth = new ThinkAuth(); //获取当前用户的角色ID $uid = session('user_id'); //获取当前请求的控制器和方法 $url = MODULE_NAME . '/' . CONTROLLER_NAME . '/' . ACTION_NAME; //进行权限认证 if (!$auth->check($url, $uid)) { $this->error('您没有访问该页面的权限!'); } }
}
ノードベースの権限認証
- ノードベースの権限認証は、フレームワークによって提供される Access クラスを使用して実装できます。このクラスも ThinkPHPLibraryThink にあります。
{
public function __construct() { parent::__construct(); //实例化Access类 $access = new ThinkAccess(); //获取当前用户的角色ID $uid = session('user_id'); //获取当前请求的控制器和方法 $url = MODULE_NAME . '/' . CONTROLLER_NAME . '/' . ACTION_NAME; //定义权限节点列表 $nodes = array( 'Index/index',//首页 'Index/add',//添加页面 'Index/edit',//编辑页面 'Index/delete',//删除操作 ); //进行权限认证 if (!$access->check($nodes, $uid, $url)) { $this->error('您没有访问该页面的权限!'); } }
}
パブリック コントローラーの確立
- フレームワークの Common モジュールにパブリック コントローラー BaseController を作成し、権限検証ロジックを配置できます。この制御は容器内で行われます。他のコントローラーがこのコントローラーを継承した後、コードのこの部分を再利用できます。
ノード情報のキャッシュ
- 権限認証では、ノード テーブルとロール テーブルを毎回クエリする必要があるため、システムのパフォーマンスに影響します。したがって、クエリ結果をキャッシュしてシステムのパフォーマンスを向上させることができます。フレームワークが提供するキャッシュ クラスを使用してクエリ結果をキャッシュし、次回クエリを実行するときに、キャッシュされた結果を直接取得できます。
暗号化されたノード情報
- セキュリティを向上させるために、ノード情報を暗号化して、ノード情報が直接公開されるのを避けることができます。フレームワークが提供する暗号化クラスを使用して、ノード ID を暗号化し、暗号化されたノード情報をロール テーブルに保存できます。
以上がthinkphp で権限認証を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

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

ホットトピック









