ホームページ > 記事 > PHPフレームワーク > ThinkPHP6のAuth認可の使用方法
ThinkPHP6 は、多くの効率的なツールと機能を提供する優れた PHP フレームワークです。その中でも、Auth 承認は、アプリケーションのアクセス許可の管理に役立つ非常に強力な機能です。この記事では、ThinkPHP6のAuth認証の使い方を紹介します。
まず、Auth コンポーネントをインストールする必要があります。ターミナルで次のコマンドを実行します:
composer require topthink/think-auth
インストールが完了したら、構成ファイルに認証サービス プロバイダーを追加する必要があります:
// config/app.php return [ // ... 'providers' => [ // ... thinkuthServiceProvider::class, ], ];
次に、次のコマンドを実行する必要があります。認証構成ファイルを生成するには:
php think auth:config
認証コンポーネントは、さまざまな権限管理要件を達成するように構成できます。基本的な構成は次のとおりです。
// config/auth.php return [ 'auth_on' => true, 'auth_type' => 1, 'auth_group' => 'auth_group', 'auth_group_access' => 'auth_group_access', 'auth_rule' => 'auth_rule', 'auth_user' => 'user', ];
Auth 認可を使用する前に、最初にいくつかのアクセス許可ルールを作成する必要があります。権限ルールは、さまざまなリソースへのユーザー アクセスを制御できます。データベースに auth_rule テーブルを作成し、レコードを追加してアクセス許可ルールを作成する必要があります。
// appmodelAuthRule.php namespace appmodel; use thinkModel; class AuthRule extends Model { // }
次に、データベースに auth_rule テーブルを作成する必要があります:
CREATE TABLE `auth_rule` ( `id` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR(100) NOT NULL COMMENT '规则', `title` VARCHAR(100) NOT NULL COMMENT '规则名称', `type` TINYINT(1) UNSIGNED NOT NULL DEFAULT '1' COMMENT '规则类型', `status` TINYINT(1) UNSIGNED NOT NULL DEFAULT '1' COMMENT '状态', `condition` TEXT COMMENT '规则表达式', PRIMARY KEY (`id`) ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='权限规则表';
次に、次の方法でいくつかの権限ルールを追加します:
use appmodelAuthRule; $rule = new AuthRule; $rule->name = 'admin/user/index'; $rule->title = '管理用户'; $rule->save(); $rule = new AuthRule; $rule->name = 'admin/user/add'; $rule->title = '添加用户'; $rule->save(); $rule = new AuthRule; $rule->name = 'admin/user/edit'; $rule->title = '编辑用户'; $rule->save(); $rule = new AuthRule; $rule->name = 'admin/user/del'; $rule->title = '删除用户'; $rule->save();
権限ルールに加えて、ユーザー グループも作成する必要があります。ユーザー グループは、同じアクセス権を持つユーザーの集合です。データベースに auth_group テーブルを作成し、レコードを追加してユーザー グループを作成する必要があります。
// appmodelAuthGroup.php namespace appmodel; use thinkModel; class AuthGroup extends Model { // }
次に、データベースに auth_group テーブルを作成する必要があります:
CREATE TABLE `auth_group` ( `id` INT NOT NULL AUTO_INCREMENT, `title` VARCHAR(100) NOT NULL COMMENT '组名', `status` TINYINT(1) UNSIGNED NOT NULL DEFAULT '1' COMMENT '状态', PRIMARY KEY (`id`) ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用户组表';
次に、次の方法でいくつかのユーザー グループを追加できます:
use appmodelAuthGroup; $group = new AuthGroup; $group->title = '管理员'; $group->save(); $group = new AuthGroup; $group->title = '普通用户'; $group->save();
これで、いくつかの権限ルールとユーザー グループを作成しました。次に、ルールをユーザー グループに割り当てる必要があります。データベースに auth_group_access テーブルを作成し、レコードを追加してユーザー グループの詳細を作成する必要があります。
// appmodelAuthGroupAccess.php namespace appmodel; use thinkModel; class AuthGroupAccess extends Model { // }
次に、データベースに auth_group_access テーブルを作成する必要があります:
CREATE TABLE `auth_group_access` ( `uid` INT NOT NULL COMMENT '用户id', `group_id` INT NOT NULL COMMENT '用户组id', UNIQUE KEY `uid_group_id` (`uid`, `group_id`), KEY `uid` (`uid`), KEY `group_id` (`group_id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COMMENT='用户组明细表';
次に、次の方法で権限ルールをユーザー グループに割り当てることができます:
use appmodelAuthGroupAccess; $access = new AuthGroupAccess; $access->uid = 1; $access->group_id = 1; $access->save(); $access = new AuthGroupAccess; $access->uid = 2; $access->group_id = 2; $access->save(); $access = new AuthGroupAccess; $access->uid = 3; $access->group_id = 2; $access->save();
これで、いくつかの権限ルールとユーザー グループを作成し、ルールをユーザー グループに割り当てました。次に、Auth 認可を使用して、ユーザーにアクセス権があるかどうかを確認できます。
// 授权验证 use thinkacadeSession; use thinkacadeRequest; use thinkacadeConfig; use thinkacadeDb; use thinkuthAuth; class BaseController extends Controller { protected function initialize() { parent::initialize(); // 如果用户未登录,则跳转到登录页面 if (!Session::has('user')) { $this->redirect('/login'); } $uid = Session::get('user.id'); // 如果是超级管理员,则直接通过权限验证 if ($uid == Config::get('admin_id')) { return true; } $auth = new Auth; $route = strtolower(Request::controller() . '/' . Request::action()); if (!$auth->check($route, $uid)) { $this->error('无权限'); } } }
まず、セッションからユーザーのログイン情報を取得する必要があります。ユーザーがログインしていない場合は、ログイン ページにジャンプします。
次に、現在のユーザーの uid を取得します。現在のユーザーがスーパー管理者の場合、権限の検証は直接行われます。
それ以外の場合は、Auth インスタンスを作成し、現在のリクエストのルートを取得します。次に、Auth check メソッドを使用して、現在のユーザーにアクセス権があるかどうかを確認します。そうでない場合は、権限なしエラーがスローされます。
この記事では、ThinkPHP6 の Auth 認証の使用方法を学びました。 Auth コンポーネントを使用して権限管理を実装し、いくつかの権限ルールとユーザー グループを作成します。最後に、Auth 認可を使用して、ユーザーにアクセス権があることを確認します。より高度な権限管理機能が必要な場合は、Auth コンポーネントを拡張することでこれを実現できます。
以上がThinkPHP6のAuth認可の使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。