thinkphp で権限認証を使用する方法
インターネットの継続的な発展に伴い、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衣類リムーバー

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

人気の記事

ホットツール

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

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

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

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

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

ホットトピック







