Heim  >  Artikel  >  PHP-Framework  >  Verwendung der Auth-Autorisierungstechnologie in ThinkPHP6

Verwendung der Auth-Autorisierungstechnologie in ThinkPHP6

WBOY
WBOYOriginal
2023-06-20 17:50:312101Durchsuche

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.

  1. So funktioniert die Auth-Autorisierung

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.

  1. Verwenden der Auth-Autorisierungstechnologie in ThinkPHP6

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');
    }
}
  1. Zusammenfassung

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn