ホームページ >PHPフレームワーク >ThinkPHP >thinkphp で権限認証を使用する方法
インターネットの継続的な発展に伴い、Web サイトのユーザー数は増加しており、ユーザーデータの管理とセキュリティを確保するために、権限認証はすべての Web サイトで不可欠な機能の 1 つとなっています。 PHPフレームワークの中でもThinkPHPは非常に人気のあるフレームワークであり、権限認証機能も充実しています。そこで、この記事では、ThinkPHP がどのように権限認証を使用するかを詳しく紹介します。
1. 権限認証の役割
権限認証は主に、さまざまな役割のユーザーの権限を制御して、ユーザーがアクセス権限を持つリソースにのみアクセスでき、それらのリソースを使用できないようにすることです。自分たちの権限を超えて。たとえば、電子商取引 Web サイトでは、管理者はすべての商品情報を表示および管理できますが、一般ユーザーは商品情報を閲覧することしかできず、変更や削除はできません。
2. 権限認証の実装方法
ThinkPHP フレームワークは、権限認証を実装する 2 つの方法、RBAC とノードベースの権限認証を提供します。 RBAC (Role-Based Access Control)、つまり役割ベースのアクセス制御では、さまざまなユーザーを役割に応じて分類します。ノードベースの権限認証は、ノードを介して権限を制御します。ノードは、コントローラ、操作メソッドなどになります。
フレームワークで 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('您没有访问该页面的权限!'); } }
}
ノードベースの権限認証
{
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('您没有访问该页面的权限!'); } }
}
パブリック コントローラーの確立
ノード情報のキャッシュ
暗号化されたノード情報
以上がthinkphp で権限認証を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。