Yii-Autorisierung rollenbasierte Zugriffskontrolle (RBAC)
1: Grundkonzepte
Eine Rolle ist eine Sammlung von Berechtigungen (zum Beispiel: Beiträge erstellen, Beiträge ändern). Eine Rolle kann einem oder mehreren Benutzern zugewiesen werden. Um zu prüfen, ob ein Benutzer über eine bestimmte Berechtigung verfügt, prüft das System, ob dem Benutzer die Rolle zugeordnet ist, die die Berechtigung enthält.
Sie können eine Regel verwenden, um sie einer Rolle oder Berechtigung zuzuordnen. Eine Regel wird durch einen Code dargestellt und die Ausführung der Regel erfolgt, wenn überprüft wird, ob ein Benutzer diese Rolle oder Berechtigung erfüllt. Beispielsweise könnte die Berechtigung „Beitrag ändern“ eine Regel verwenden, die prüft, ob der Benutzer der Ersteller des Beitrags ist. Wenn der Benutzer bei der Berechtigungsprüfung nicht der Ersteller des Beitrags ist, wird davon ausgegangen, dass er (sie) nicht über die Berechtigung zum „Ändern von Beiträgen“ verfügt.
Sowohl Rollen als auch Berechtigungen können hierarchisch organisiert werden. In bestimmten Fällen kann eine Rolle aus anderen Rollen oder Berechtigungen bestehen, die wiederum aus anderen Berechtigungen bestehen können. Yii implementiert eine sogenannte lokale Ordnungshierarchie, die spezifischere Baumebenen enthält. Eine Rolle kann eine Berechtigung enthalten, aber nicht umgekehrt. (Anmerkung des Übersetzers: Es ist verständlich, dass Rollen oben und Berechtigungen unten stehen. Wenn Berechtigungen von oben nach unten angetroffen werden, können Rollen nicht weiter unten angezeigt werden.)
Zweitens: Konfigurieren Sie RBAC
Zu Beginn Bevor Sie Berechtigungsdaten definieren und Zugriffsprüfungen durchführen, müssen Sie die Anwendungskomponente yiibaseApplication::authManager konfigurieren. Yii bietet zwei Sätze von Autorisierungsmanagern: yiirbacPhpManager und yiirbacDbManager. Ersteres verwendet PHP-Skripte zum Speichern von Autorisierungsdaten, während letzteres eine Datenbank zum Speichern von Autorisierungsdaten verwendet. Wenn Ihre Anwendung keine große Anzahl dynamischer Rollen und Berechtigungsverwaltung erfordert, können Sie die Verwendung von ersterem in Betracht ziehen
1: Verwenden Sie yiirbacPhpManager
return [ // ... 'components' => [ 'authManager' => [ 'class' => 'yii\rbac\PhpManager', ], // ... ], ];
Nachdem die Konfiguration abgeschlossen ist, können Sie Yii verwenden: :$app-> ;authManager für den Zugriff auf authManager
yiirbacPhpManager speichert RBAC-Daten standardmäßig in Dateien im @app/rbac-Verzeichnis. Wenn die Berechtigungsstufendaten zur Laufzeit geändert werden, stellen Sie sicher, dass der WEB-Serverprozess über Schreibberechtigungen für das Verzeichnis und die darin enthaltenen Dateien verfügt.
2: Verwenden Sie yiirbacDbManager
(1) Konfigurieren Sie yiirbacDbManager
return [ // ... 'components' => [ 'authManager' => [ 'class' => 'yii\rbac\DbManager', // uncomment if you want to cache RBAC items hierarchy // 'cache' => 'cache', ], // ... ], ];
Hinweis hier:
Wenn Sie die Basisvorlage von Yii verwenden, die oben genannten Zur Konfiguration, Sie müssen es sowohl in den Dateien config/console.php als auch config/web.php konfigurieren. Wenn Sie ein erweitertes Template von Yii sind, müssen Sie es nur einmal in der Datei common/config/main.php
konfigurieren(2) Generieren Sie die erforderlichen Berechtigungstabellen
Wenn Sie yiirbacDbManager verwenden, müssen Sie 4 Datenbanktabellen generieren, um Berechtigungsdaten zu speichern (sie haben alle Standardtabellennamen. Wenn Sie die Tabellennamen ändern müssen, yiirbacDbManager konfigurieren Bei Bedarf ändern)
itemTable: In dieser Tabelle werden Autorisierungseinträge gespeichert (Anmerkung des Übersetzers: Rollen und Berechtigungen). Der Standardtabellenname ist „auth_item“ .
itemChildTable: Diese Tabelle speichert die hierarchische Beziehung autorisierter Einträge. Der Standardtabellenname ist „auth_item_child“.
assignmentTable: In dieser Tabelle wird die Zuordnung von Berechtigungseinträgen zu Benutzern gespeichert. Der Standardtabellenname ist „auth_assignment“.
ruleTable: In dieser Tabelle werden Regeln gespeichert. Der Standardtabellenname ist „auth_rule“.
Führen Sie
yii migrate --migrationPath=@yii/rbac/migrations
Im Projektverzeichnis aus, nachdem Sie den obigen Befehl ausgeführt haben Zeit wir Die vier oben genannten Tabellen werden in der Datenbank generiert
Wenn Sie zum Generieren der Datenbank keine detaillierten Befehle verwenden, können Sie den Inhalt von Vendoryiisoftyii2rbacmigrationsschema-mysql hinzufügen. sql Kopieren Sie es in die Datenbank und führen Sie es aus, um die Datentabelle zu generieren
Nach dem Generieren der entsprechenden Berechtigungstabelle können wir Yii::$app->authManager verwenden, um auf authManager zuzugreifen
Drei : Autorisierungsdaten festlegen
1: Berechtigungen hinzufügen (erstellen) (Berechtigungsdaten in der Tabelle auth_item generieren, Typ ist 2, der Berechtigungen angibt)
$auth = Yii::$app->authManager;// 添加 "createPost" 权限$createPost = $auth->createPermission('createPost'); $createPost->description = '创建了createPost权限'; $auth->add($createPost);
2: Eine Rolle erstellen (Rollendaten in der Tabelle generieren). auth_item-Tabelle, Typ ist 1 stellt die Rolle dar)
$auth = Yii::$app->authManager; $role = $auth->createRole('author'); $role->description = '创建了author角色'; $auth->add($role);
3: Berechtigungen für die Rolle erteilen
(1) Bestimmte Berechtigungen für die Rolle erteilen
$auth = Yii::$app->authManager; $createPost = $auth->createPermission('createPost');//创建权限对象 $role = $auth->createRole('author');//创建角色对象 $auth->addChild($role, $createPost); //添加对应关系(给author角色添加createPost权限)
(2) Alle gewähren Berechtigungen für die Rolle für die angegebene Rolle
$auth = Yii::$app->authManager; $role1 = $auth->createRole('author1');//创建角色对象 $role2 = $auth->createRole('author2');//创建权限对象 $auth->addChild($role1, $role2); //添加对应关系(给author1角色添加author2角色所有权限)
4: Benutzern Rollen zuweisen
$auth = Yii::$app->authManager; $role = $auth->createRole('author');//创建角色对象$auth->assign($role, 1); #1是IdentityInterface::getId()返回的id,及用户表的id
Vier: Berechtigungen überprüfen
\Yii::$app->user->can($action) #$action表示权限\Yii::$app->user->can('createPost') #判断用户是否具有createPost权限
Rolle des Benutzers abrufen
$auth = Yii::$app->authManager; $roles = $auth->getRolesByUser($userId);
Holen Sie sich die Berechtigungen des Benutzers
$auth = Yii::$app->authManager; $roles = $auth->getPermissionsByUser($userId);
Das Obige ist ein einfaches Verständnis der rollenbasierten Zugriffskontrolle (RBAC). Einzelheiten finden Sie in der offiziellen Dokumentation von Yii
Das obige ist der detaillierte Inhalt vonYii-Autorisierung rollenbasierte Zugriffskontrolle (RBAC). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Mit der kontinuierlichen Weiterentwicklung der Cloud-Computing-Technologie ist die Datensicherung zu etwas geworden, das jedes Unternehmen durchführen muss. In diesem Zusammenhang ist es besonders wichtig, ein hochverfügbares Cloud-Backup-System zu entwickeln. Das PHP-Framework Yii ist ein leistungsstarkes Framework, das Entwicklern dabei helfen kann, schnell leistungsstarke Webanwendungen zu erstellen. Im Folgenden wird vorgestellt, wie Sie mit dem Yii-Framework ein hochverfügbares Cloud-Backup-System entwickeln. Entwerfen des Datenbankmodells Im Yii-Framework ist das Datenbankmodell ein sehr wichtiger Teil. Denn das Datensicherungssystem erfordert viele Tabellen und Beziehungen

Da die Nachfrage nach Webanwendungen weiter wächst, haben Entwickler bei der Auswahl von Entwicklungsframeworks immer mehr Möglichkeiten. Symfony und Yii2 sind zwei beliebte PHP-Frameworks. Sie verfügen beide über leistungsstarke Funktionen und Leistung. Welches Framework ist jedoch besser geeignet, wenn es darum geht, umfangreiche Webanwendungen zu entwickeln? Als nächstes führen wir eine vergleichende Analyse von Symphony und Yii2 durch, um Ihnen zu helfen, eine bessere Wahl zu treffen. Grundlegende Übersicht Symphony ist ein Open-Source-Webanwendungs-Framework, das in PHP geschrieben ist und darauf aufbaut

Das Yii-Framework ist ein Open-Source-PHP-Webanwendungsframework, das zahlreiche Tools und Komponenten zur Vereinfachung des Prozesses der Webanwendungsentwicklung bereitstellt, wobei die Datenabfrage eine der wichtigen Komponenten ist. Im Yii-Framework können wir eine SQL-ähnliche Syntax verwenden, um auf die Datenbank zuzugreifen und Daten effizient abzufragen und zu bearbeiten. Der Abfrage-Builder des Yii-Frameworks umfasst hauptsächlich die folgenden Typen: ActiveRecord-Abfrage, QueryBuilder-Abfrage, Befehlsabfrage und Original-SQL-Abfrage

Mit der Weiterentwicklung des Internets wird auch die Nachfrage nach der Entwicklung von Webanwendungen immer größer. Für Entwickler erfordert die Entwicklung von Anwendungen ein stabiles, effizientes und leistungsstarkes Framework, das die Entwicklungseffizienz verbessern kann. Yii ist ein führendes Hochleistungs-PHP-Framework, das umfangreiche Funktionen und gute Leistung bietet. Yii3 ist die nächste Generation des Yii-Frameworks, das die Leistung und Codequalität basierend auf Yii2 weiter optimiert. In diesem Artikel stellen wir vor, wie Sie das Yii3-Framework zum Entwickeln von PHP-Anwendungen verwenden.

Im aktuellen Informationszeitalter sind Big Data, künstliche Intelligenz, Cloud Computing und andere Technologien in den Fokus großer Unternehmen gerückt. Unter diesen Technologien hat die Grafikkarten-Rendering-Technologie als leistungsstarke Grafikverarbeitungstechnologie immer mehr Aufmerksamkeit erhalten. Die Grafikkarten-Rendering-Technologie wird häufig in der Spieleentwicklung, bei Film- und Fernsehspezialeffekten, im technischen Modellbau und in anderen Bereichen eingesetzt. Für Entwickler ist die Wahl eines Frameworks, das zu ihren Projekten passt, eine sehr wichtige Entscheidung. Unter den aktuellen Sprachen ist PHP eine sehr dynamische Sprache. Einige hervorragende PHP-Frameworks wie Yii2, Ph

Wenn Sie fragen: „Was ist Yii?“ schauen Sie sich mein vorheriges Tutorial an: Einführung in das Yii Framework, das die Vorteile von Yii bespricht und die Neuerungen in Yii 2.0 beschreibt, das im Oktober 2014 veröffentlicht wurde. Hmm> In dieser Serie „Programmieren mit Yii2“ werde ich die Leser in die Verwendung des Yii2PHP-Frameworks einführen. Im heutigen Tutorial werde ich Ihnen zeigen, wie Sie die Konsolenfunktionalität von Yii nutzen können, um Cron-Jobs auszuführen. In der Vergangenheit habe ich wget – eine über das Internet zugängliche URL – in einem Cron-Job verwendet, um meine Hintergrundaufgaben auszuführen. Dies wirft Sicherheitsbedenken auf und hat einige Leistungsprobleme zur Folge. Während ich in unserer Serie „Sicherheit für Startup“ einige Möglichkeiten zur Risikominimierung besprochen habe, hatte ich gehofft, auf konsolengesteuerte Befehle umsteigen zu können

In der modernen Softwareentwicklung ist der Aufbau eines leistungsstarken Content Management Systems (CMS) keine leichte Aufgabe. Entwickler müssen nicht nur über umfangreiche Fähigkeiten und Erfahrung verfügen, sondern auch die fortschrittlichsten Technologien und Tools nutzen, um ihre Funktionalität und Leistung zu optimieren. In diesem Artikel wird erläutert, wie Sie Yii2 und GrapeJS, zwei beliebte Open-Source-Software, zur Implementierung von Back-End-CMS und visueller Front-End-Bearbeitung verwenden. Yii2 ist ein beliebtes PHPWeb-Framework, das umfangreiche Tools und Komponenten für die schnelle Erstellung bereitstellt

Yii-Framework: In diesem Artikel wird die Methode von Yii zum Konvertieren von Objekten in Arrays oder zur direkten Ausgabe in das JSON-Format vorgestellt. Sie hat einen bestimmten Referenzwert und ich hoffe, dass sie jedem helfen kann.
