ThinkPHP6のAuth認可の使用方法
ThinkPHP6 は、多くの効率的なツールと機能を提供する優れた PHP フレームワークです。その中でも、Auth 承認は、アプリケーションのアクセス許可の管理に役立つ非常に強力な機能です。この記事では、ThinkPHP6のAuth認証の使い方を紹介します。
- 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_on: 権限認証を有効にするかどうか、true がオン、false がオフ;
- auth_type: 認証方式、1 はリアルタイム認証 (つまり、権限は権限が検証されるたびに再取得されます)、2 はログイン認証 (つまり、ユーザーは後で権限を検証するためにログインします);
- auth_group: ユーザー グループ データ テーブル名;
- auth_group_access: ユーザー グループ詳細関連付けテーブル名;
- auth_rule: 権限ルール テーブル;
- auth_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 サイトの他の関連記事を参照してください。

ホット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)

ホットトピック









現在のWin10 Enterprise Edition 2016 長期サービス版を継続利用したくない場合は、一部の内容を変更してシステムイメージをインストールするだけで、Professional Editionに切り替えることができます。 win10 エンタープライズ バージョン 2016 長期サービス バージョンをプロフェッショナル バージョンに変更する方法 1. win + R キーを押し、「regedit」と入力します。 2. 次のパスを上のアドレス バーに直接貼り付けます: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT \CurrentVersion3 に移動し、EditionID を見つけて内容を「professional」に置き換えて確認します。

ThinkPHP プロジェクトを実行するには、Composer をインストールし、Composer を使用してプロジェクトを作成し、プロジェクト ディレクトリに入り、php bin/consoleserve を実行し、http://localhost:8000 にアクセスしてようこそページを表示する必要があります。

ThinkPHP には、さまざまな PHP バージョン向けに設計された複数のバージョンがあります。メジャー バージョンには 3.2、5.0、5.1、および 6.0 が含まれますが、マイナー バージョンはバグを修正し、新機能を提供するために使用されます。最新の安定バージョンは ThinkPHP 6.0.16 です。バージョンを選択するときは、PHP バージョン、機能要件、コミュニティ サポートを考慮してください。最高のパフォーマンスとサポートを得るには、最新の安定バージョンを使用することをお勧めします。

ThinkPHP フレームワークをローカルで実行する手順: ThinkPHP フレームワークをローカル ディレクトリにダウンロードして解凍します。 ThinkPHP ルート ディレクトリを指す仮想ホスト (オプション) を作成します。データベース接続パラメータを構成します。 Webサーバーを起動します。 ThinkPHP アプリケーションを初期化します。 ThinkPHP アプリケーションの URL にアクセスして実行します。

Laravel フレームワークと ThinkPHP フレームワークのパフォーマンスの比較: ThinkPHP は、最適化とキャッシュに重点を置いて、一般に Laravel よりもパフォーマンスが優れています。 Laravel は優れたパフォーマンスを発揮しますが、複雑なアプリケーションの場合は、ThinkPHP の方が適している可能性があります。

「開発に関する提案: ThinkPHP フレームワークを使用して非同期タスクを実装する方法」 インターネット技術の急速な発展に伴い、Web アプリケーションには、多数の同時リクエストと複雑なビジネス ロジックを処理するための要件がますます高まっています。システムのパフォーマンスとユーザー エクスペリエンスを向上させるために、開発者は多くの場合、電子メールの送信、ファイルのアップロードの処理、レポートの生成など、時間のかかる操作を実行するために非同期タスクの使用を検討します。 PHP の分野では、人気のある開発フレームワークとして ThinkPHP フレームワークが、非同期タスクを実装するための便利な方法をいくつか提供しています。

ThinkPHP のインストール手順: PHP、Composer、および MySQL 環境を準備します。 Composer を使用してプロジェクトを作成します。 ThinkPHP フレームワークと依存関係をインストールします。データベース接続を構成します。アプリケーションコードを生成します。アプリケーションを起動し、http://localhost:8000 にアクセスします。

ThinkPHP は、キャッシュ メカニズム、コードの最適化、並列処理、データベースの最適化などの利点を備えた高性能 PHP フレームワークです。公式パフォーマンステストでは、1秒あたり10,000以上のリクエストを処理できることが示されており、実際のアプリケーションではJD.comやCtripなどの大規模なWebサイトやエンタープライズシステムで広く使用されています。
