ThinkPHP6 ist ein hervorragendes PHP-Framework, das uns viele effiziente Tools und Funktionen bietet. Unter diesen ist die Authentifizierung eine sehr leistungsstarke Funktion, die uns bei der Verwaltung von Berechtigungen in Anwendungen helfen kann. In diesem Artikel wird erläutert, wie Sie die Auth-Autorisierung von ThinkPHP6 verwenden.
Zuerst müssen wir die Auth-Komponente installieren. Führen Sie den folgenden Befehl im Terminal aus:
composer require topthink/think-auth
Nachdem die Installation abgeschlossen ist, müssen wir den Auth-Dienstanbieter in der Konfigurationsdatei hinzufügen:
// config/app.php return [ // ... 'providers' => [ // ... thinkuthServiceProvider::class, ], ];
Dann müssen wir den folgenden Befehl ausführen, um die Auth-Konfigurationsdatei zu generieren:
php think auth:config
Die Auth-Komponente kann konfiguriert werden, um unterschiedliche Berechtigungsverwaltungsanforderungen zu erfüllen. Das Folgende ist eine Grundkonfiguration:
// 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', ];
// appmodelAuthRule.php namespace appmodel; use thinkModel; class AuthRule extends Model { // }
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='权限规则表';
Dann können wir einige Berechtigungsregeln hinzufügen, indem wir:
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();
// appmodelAuthGroup.php namespace appmodel; use thinkModel; class AuthGroup extends Model { // }
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='用户组表';
Dann können wir einige Benutzergruppen hinzufügen, indem wir:
use appmodelAuthGroup; $group = new AuthGroup; $group->title = '管理员'; $group->save(); $group = new AuthGroup; $group->title = '普通用户'; $group->save();
// appmodelAuthGroupAccess.php namespace appmodel; use thinkModel; class AuthGroupAccess extends Model { // }
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='用户组明细表';
Anschließend können wir Benutzergruppen Berechtigungsregeln zuweisen über:
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();
// 授权验证 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('无权限'); } } }
Dann erhalten wir die UID des aktuellen Benutzers. Wenn der aktuelle Benutzer ein Superadministrator ist, wird die Berechtigungsüberprüfung direkt durchgeführt.
Andernfalls erstellen wir eine Auth-Instanz und erhalten die Route für die aktuelle Anfrage. Anschließend verwenden wir die Auth-Check-Methode, um zu überprüfen, ob der aktuelle Benutzer über Zugriffsrechte verfügt. Wenn nicht, wird ein Fehler „Keine Berechtigung“ ausgegeben.
ZusammenfassungDas obige ist der detaillierte Inhalt vonSo verwenden Sie die Auth-Autorisierung von ThinkPHP6. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!