Heim >PHP-Framework >Denken Sie an PHP >Verwendung der Auth-Autorisierungstechnologie in ThinkPHP6
Mit der kontinuierlichen Entwicklung von Internetanwendungen ist die Sicherheit von Webanwendungen zu einem immer wichtigeren Thema geworden. Wie die Sicherheit von Programmen gewährleistet werden kann, ist zu einem Problem geworden, mit dem alle Entwickler konfrontiert sind. Die Auth-Autorisierungstechnologie ist eine beliebte Lösung, die eine rollenbasierte Zugriffskontrolle bietet.
In diesem Artikel erfahren Sie, wie Sie die Auth-Autorisierungstechnologie in ThinkPHP6 verwenden. Zunächst müssen wir das Funktionsprinzip und die Kernkonzepte der Auth-Autorisierung klären.
Der Kern der Auth-Autorisierung ist die rollenbasierte Zugriffskontrolle, die hauptsächlich in die folgenden drei Schritte unterteilt ist:
1.1 Eine Rolle erstellen
Bevor Sie die Auth-Autorisierung verwenden, müssen Sie zunächst eine Rolle erstellen eine Rolle. Eine Rolle ist eine Reihe von Berechtigungen, die den Zugriff definieren, den ein Benutzer hat.
1.2 Rollen Berechtigungen zuweisen
Nachdem Sie eine Rolle erstellt haben, müssen Sie der Rolle die entsprechenden Berechtigungen zuweisen. Berechtigungen beziehen sich auf die Berechtigung, auf welche Funktionsmodule oder Daten zugegriffen werden kann.
1.3 Benutzern Rollen zuweisen
Abschließend müssen den Benutzern Rollen zugewiesen werden. Einem Benutzer können mehrere Rollen zugewiesen werden, die die Zugriffsrechte des Benutzers bestimmen.
Verwenden Sie im Auth-Autorisierungsworkflow den Access Controller, um die Zugriffskontrolle zu implementieren. Mit dem Access Controller wird überprüft, ob der Benutzer Zugriffsrechte auf die aktuelle URL hat. Wenn der Benutzer Zugriffsrechte hat, kann er weiterhin auf die relevanten Inhalte zugreifen.
Da wir nun verstanden haben, wie die Auth-Autorisierung funktioniert, erklären wir im Folgenden ausführlich, wie die Auth-Autorisierungstechnologie in ThinkPHP6 verwendet wird. Angenommen, wir haben zwei Arten von Benutzern im Hintergrund: Administratoren und normale Benutzer. Administratoren können auf alle Inhaltsmodule zugreifen, während normale Benutzer nur auf einige Inhalte zugreifen können.
2.1 Installieren und konfigurieren Sie das Auth-Plug-in
Bevor wir die Auth-Technologie verwenden, müssen wir zuerst das Auth-Plug-in installieren und konfigurieren. In ThinkPHP6 wurde das Auth-Plugin in das Framework integriert und kann mit einfacher Konfiguration verwendet werden.
Erstellen Sie zunächst die Konfigurationsdatei auth.php im Konfigurationsverzeichnis. Die Konfigurationsinformationen lauten wie folgt:
return [ // 用户认证的类名,不设置则使用核心集成认证方法 'auth' => AppAuth::class, // 不需要认证的路由,可允许所有用户访问的路由 'no_auth' => ['index/index'], // 需要认证且验证失败时跳转的地址 'fail_url' => 'index/login', ];
2.2 Benutzermodell erstellen
Benutzermodell erstellen, der relevante Code lautet wie folgt:
<?php namespace appmodel; use thinkModel; class User extends Model { // 定义角色关联 public function roles() { return $this->belongsToMany(Role::class, 'user_role'); } // 判断用户是否有权限访问当前操作 public function hasPermission($permission) { foreach ($this->roles as $role) { if ($role->checkPermission($permission)) { return true; } } return false; } }
2.3 Rollenmodell erstellen
Rollenmodell erstellen, verwandter Code lautet wie folgt:
<?php namespace appmodel; use thinkModel; class Role extends Model { // 定义权限关联 public function permissions() { return $this->belongsToMany(Permission::class, 'role_permission'); } // 检查角色是否有权限访问当前操作 public function checkPermission($permission) { foreach ($this->permissions as $item) { if ($item->name == $permission) { return true; } } return false; } }
2.4 Berechtigungsmodell erstellen
Berechtigungsmodell erstellen, der relevante Code lautet wie folgt:
<?php namespace appmodel; use thinkModel; class Permission extends Model { }
2.5 Datenbanktabelle erstellen
Datenbanktabelle erstellen, einschließlich Benutzertabelle, Rollentabelle, Berechtigungstabelle und zwei relationale Tabellen user_role und Role_permission .
Benutzertabellenbezogene Struktur:
Feld | Typ | Kommentar |
---|---|---|
id | int | . |
Benutzername | varchar(20) | |
Passwort | varchar(255) | |
created_at | datetime | |
updated_at | datetime | . |
role Tabelle Verwandte Strukturen:
Feld | Typ | Kommentar |
---|---|---|
id | int | |
name | varchar(20) | |
created_at | datetime | |
aktualisiert_at | datetime |
Erlaubnis Tabellenbezogene Struktur:
Field | Type | Comment |
---|---|---|
id | int | |
name | varchar(20) |
user_role-Tabellenbezogene Struktur :
Feld | Typ | Kommentar |
---|---|---|
id | int | |
user_id | int | |
role_id | int |
Struktur im Zusammenhang mit der Role_permission-Tabelle:
Field | Type | Comment |
---|---|---|
id | int | . |
role_id | int | |
permission_id | int |
2.6 Controller-Code-Implementierung
Im Folgenden wird anhand eines Beispiel-Controllers veranschaulicht, wie die Auth-Autorisierung implementiert wird. Der Beispiel-Controller-Code lautet wie folgt:
<?php namespace appdmincontroller; use appmodelUser; use thinkController; class Index extends Controller { // 后台首页 public function index() { // 获取当前登录用户 $user_id = session('user_id'); $user = User::find($user_id); // 判断用户是否有权限访问当前操作 if (!$user->hasPermission($this->request->path())) { $this->error('无权访问'); } return view(); } // 登录页面 public function login() { return view(); } // 处理登录请求 public function do_login() { $username = $this->request->param('username'); $password = $this->request->param('password'); // 根据用户名查询用户 $user = User::where('username', $username)->find(); // 验证用户密码 if ($user && password_verify($password, $user->password)) { // 记录登录状态 session('user_id', $user->id); // 跳转到后台首页 $this->redirect('index/index'); } else { $this->error('登录失败'); } } // 退出登录 public function logout() { session('user_id', null); $this->redirect('index/login'); } }
In diesem Artikel haben wir das Arbeitsprinzip, die Kernkonzepte und die Anwendungsimplementierung der Auth-Autorisierung in ThinkPHP6 vorgestellt. Der Einsatz der Auth-Autorisierungstechnologie kann die Sicherheit von Webanwendungen effektiv verbessern und Benutzern sicherere und zuverlässigere Dienste bieten. Auch im anschließenden Entwicklungsprozess einer Webanwendung sollten wir auf Sicherheitsgarantien achten und bestehende Sicherheitstechnologien bestmöglich nutzen.
Das obige ist der detaillierte Inhalt vonVerwendung der Auth-Autorisierungstechnologie in ThinkPHP6. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!