


yii2 RBAC verwendet DbManager, um ein Beispiel für die Hintergrundberechtigung „urteil_php' zu implementieren
Das Beispiel in diesem Artikel beschreibt, wie yii2 RBAC DbManager verwendet, um die Beurteilung von Hintergrundberechtigungen zu implementieren. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Generieren Sie zunächst die Tabelle im yii2-Framework basierend auf dem Dokument
yii migrate --migrationPath=@yii/rbac/migrations/
Generieren Sie die folgenden 4 Tabellen:
auth_assignment
auth_item_child
auth_item
auth_rule
Verwenden Sie yiis gii, um schnell das entsprechende Modell zu generieren. Da die Tabelle auth_item jedoch gleichzeitig Rollen und Berechtigungen speichert, habe ich hier zwei neue Modelle erstellt, RoleForm und, da wir später Rollen und Berechtigungen aufteilen werden PermissionForm, um sie zu unterscheiden. Da Rollen eng mit Berechtigungen verbunden sind, wird dem von auth_item generierten Modell ein zusätzliches Attribut $child hinzugefügt, das später verwendet wird und vorerst ignoriert wird.
Das Folgende ist der relevante Code für das Charaktermodell
<?php namespace app\models; use Yii; use app\models\AuthItem; use yii\rbac\Item; /* * 角色model * 指尖上的艺术家 */ class RoleForm extends AuthItem { public function init() { parent::init(); $this->type = Item::TYPE_ROLE;//yii-rbac-Role隐藏继承常量这里的值是1 } }
Das Folgende ist der relevante Code des Berechtigungsmodells
<?php namespace app\models; use Yii; use app\models\AuthItem; use yii\rbac\Item; /* * 权限model * 指尖上的艺术家 */ class PermissionForm extends AuthItem { public function init() { parent::init(); $this->type = Item::TYPE_PERMISSION;//常量值 2 } }
Fügen Sie außerdem ein Attribut zum AuthItem-Modell hinzu
<?php class AuthItem..... public $child;//用于角色权限添加 ......
Jetzt zu unserem entsprechenden Controller
Wenn wir den Berechtigungscontroller schreiben, müssen wir zunächst die systemeigenen Erweiterungen verwenden
. . .
verwenden Sie yiirbacPermission;
. . .
/* * 权限添加 */ public function actionCreate() { $model = new PermissionForm(); if( $model->load( Yii::$app->request->post() ) && $model->validate() ) { //rbac中permission对象 $permission = new Permission(); $permission->name = trim( $model->name ); $permission->type = $model->type; //权限添加 Yii::$app->authManager->add( $permission ); } }
Beim Ändern bleiben die anderen Dinge gleich und ändern Sie nur die Methode
/* * param string $name 修改的权限名 * param Object $permission 跟添加一样提交上来的数据 */ Yii::$app->authManager->update( $name, $permission );
Hier löschen
//Returns the named permission. $permission = Yii::$app->authManager->getPermission( $name ); //Removes a permission or rule from the RBAC system. Yii::$app->authManager->remove( $permission );
Der Grundstein für die Berechtigungen ist vollständig, daher werde ich es nicht schreiben, wenn ich es überprüfen möchte
Das Folgende ist der Charakter-Controller
Bringen Sie das mit
use yii\rbac\Role; /* * 角色添加 */ public function actionCreate() { $model = new RoleForm(); if ( $model->load( Yii::$app->request->post() ) && $model->validate() ) { //实例化角色对象 $role = new Role(); $role->name = $model->name; $role->type = $model->type; //添加角色 Yii::$app->authManager->add( $role ); } //权限列表( 添加角色的时候我们就可看到当前有没有权限来添加 ) $permissions = $this->loadPermission(); //将$model跟$permissions....渲染到视图就好了 }
/* * 修改 * param string $name 修改的角色名 * param Object $role 跟添加一样提交上来的数据 */ $bool = Yii::$app->authManager->update( $name, $role );
Es ist schwieriger, es zu löschen
/* * param string $name 角色名 */ $role = Yii::$app->authManager->getRole( $name );//获取当前角色对象 //Returns the child roles. $childAll = Yii::$app->authManager->getChildren( $role ); if ( isset($childAll) ) {//逐一删除权限 foreach ($childAll as $value) { //Returns the named permission. $perObj = Yii::$app->authManager->getPermission($value); //Removes a child from its parent. Yii::$app->authManager->removeChild( $role, $perObj ); } } Yii::$app->authManager->remove( $role );//最后删除我们的角色了
Das Wichtigste ist, dass wir der Rolle Berechtigungen erteilen müssen, richtig, wie im folgenden Code gezeigt
//当前角色所拥有的权限 $childArray = $this->loadRolePermission( $model->name );//这个就是返回权限数组 if ( !empty( $childArray ) ) { $model->child = $childArray; } else { $model->child = array(); } //Returns all permissions in the system. $permissions = Yii::$app->authManager->getPermissions(); $perArr = array(); foreach ($permissions as $key => $value) { $perArr[$value->name] = $value->name; } if ( $model->load( Yii::$app->request->post() ) && $model->validate() ) { //角色对象 $child = isset( $_POST['AuthItem']['child'] ) ? $_POST['AuthItem']['child'] : NULL; //表单无法验证child所以当为空的时候跳回原页面 if ( empty( $child ) ) { return $this->redirect(..你们要跳的页面..); } //判断角色是否分配权限,已分配则删除,反之增加新的 if ( !empty( $childArray ) ) { //Removed all children form their parent. $bool = Yii::$app->authManager->removeChildren( $model ); if ( !$bool ) { throw new HttpException(404, '别想糊弄我!凑你一脸~~~'); } } //当前角色对象 $role = Yii::$app->authManager->getRole( $model->name ); //child权限添加 if( isset( $child ) ) { foreach ( $child as $val) { //获取权限 $childObj = Yii::$app->authManager->getPermission($val); //给item_child表写入数据(权限表) Yii::$app->authManager->addChild( $role, $childObj ); } return $this->redirect(..你们要跳的页面..); } }
Schließlich ist unser letzter Controller die Rolle, die dem Benutzer zugeordnet ist
/* * 创建角色跟用户之间关联的关键部分代码 */ //Returns the named role. $role =Yii::$app->authManager->getRole( $roleName ); // Assigns a role to a user. Yii::$app->authManager->assign( $role, $userId );<pre name="code" class="php">/* * 权限检测 * param int| string $userId 用户id * param string $permission 权限名 */ Yii::$app->authManager->checkAccess( $userId , $permission ) )
So ermitteln Sie Berechtigungen
/* * 权限检测 * param int| string $userId 用户id * param string $permission 权限名 */ Yii::$app->authManager->checkAccess( $userId , $permission ) )
Leser, die an mehr Yii-bezogenen Inhalten interessiert sind, können sich die speziellen Themen dieser Website ansehen: „Einführung in das Yii-Framework und Zusammenfassung gängiger Techniken“, „Zusammenfassung des ausgezeichneten PHP-Entwicklungsframeworks“, „Grundlegendes Tutorial für den Einstieg“. mit Smarty-Vorlagen“, „Einführungs-Tutorial zum objektorientierten PHP-Programmierung-Design“, „Zusammenfassung der PHP-String-(String-)Verwendung“, „Einführungs-Tutorial zum PHP-MySQL-Datenbankbetrieb“ und „Zusammenfassung allgemeiner PHP-Datenbankbetriebsfähigkeiten“
Ich hoffe, dass dieser Artikel für jedermann beim PHP-Programmdesign basierend auf dem Yii-Framework hilfreich sein wird.

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



Die Lösung für das Discuz-Hintergrund-Login-Problem wird aufgezeigt. Mit der rasanten Entwicklung des Internets ist die Website-Erstellung immer häufiger geworden, und Discuz wurde als häufig verwendetes Forum-Website-Erstellungssystem bevorzugt viele Webmaster. Gerade aufgrund seiner leistungsstarken Funktionen stoßen wir jedoch manchmal auf Probleme bei der Verwendung von Discuz, wie z. B. Probleme bei der Anmeldung im Hintergrund. Heute werden wir die Lösung für das Discuz-Hintergrund-Login-Problem enthüllen und konkrete Codebeispiele bereitstellen. Wir hoffen, den Bedürftigen zu helfen.

Sind Sie besorgt über verstümmelten WordPress-Backend-Code? Probieren Sie diese Lösungen aus, da spezifische Codebeispiele erforderlich sind. Mit der weit verbreiteten Anwendung von WordPress bei der Website-Erstellung kann es bei vielen Benutzern zu Problemen mit verstümmeltem Code im WordPress-Backend kommen. Ein solches Problem führt dazu, dass die Hintergrundverwaltungsoberfläche verstümmelte Zeichen anzeigt, was den Benutzern große Probleme bereitet. In diesem Artikel werden einige gängige Lösungen vorgestellt, die Benutzern helfen, das Problem verstümmelter Zeichen im WordPress-Backend zu lösen. Ändern Sie die Datei wp-config.php und öffnen Sie wp-config.

Wie deaktiviere ich die Ausführung von Software im Hintergrund in Win11? Wir verwenden einige Software, wenn wir sie nicht verwenden. Einige Softwareprogramme werden weiterhin im Hintergrund ausgeführt. Während der Ausführung im Hintergrund kommt es zu einer gewissen Verzögerung . Einige Freunde möchten wissen, was zu tun ist, um die Ausführung von Software im Hintergrund in Win11 zu deaktivieren. Der unten stehende Editor hat die Schritte zum Deaktivieren der Ausführung von Software im Hintergrund in Win11 zusammengestellt. Wenn Sie interessiert sind, folgen Sie dem Editor und lesen Sie unten! Schritte zum Deaktivieren der im Hintergrund ausgeführten Software in Win11: 1. Drücken Sie die Tastenkombination „win+X“ und wählen Sie „Einstellungen“ aus den oben angegebenen Optionen. 2. Nachdem Sie die neue Benutzeroberfläche aufgerufen haben, klicken Sie auf „Apps“ und suchen Sie dann rechts nach „Anwendungen und Funktionen“. 3. Suchen Sie darin nach „Microsoft-Informationen“ und klicken Sie darauf

Discuz-Hintergrundanmeldung fehlgeschlagen? Bringen Sie Ihnen bei, wie Sie es einfach lösen können! Da Discuz als beliebte Forenplattform häufig bei der Erstellung und Verwaltung von Websites verwendet wird, kommt es manchmal zu Fehlern bei der Backend-Anmeldung, was besorgniserregend ist. Heute besprechen wir die Probleme, die zu Anmeldefehlern im Discuz-Backend führen können, stellen einige Lösungen bereit und fügen spezifische Codebeispiele bei. Ich hoffe, dieser Artikel kann Webmastern und Entwicklern helfen, die auf ähnliche Probleme stoßen. 1. Bei der Fehlerbehebung geht es darum, das Problem des Anmeldefehlers bei Discuz im Hintergrund zu lösen.

Entwicklung des ThinkPHP6-Backend-Managementsystems: Implementierung von Backend-Funktionen Einführung: Mit der kontinuierlichen Weiterentwicklung der Internettechnologie und der Marktnachfrage benötigen immer mehr Unternehmen und Organisationen ein effizientes, sicheres und flexibles Backend-Managementsystem zur Verwaltung von Geschäftsdaten und zur Durchführung des Betriebsmanagements. In diesem Artikel wird das ThinkPHP6-Framework verwendet, um anhand von Beispielen zu demonstrieren, wie ein einfaches, aber praktisches Backend-Verwaltungssystem entwickelt wird, das grundlegende Funktionen wie Berechtigungskontrolle, Datenhinzufügung, Löschung, Änderung und Abfrage umfasst. Umgebungsvorbereitung Bevor wir beginnen, müssen wir PHP, MySQL, Com installieren

So entfernen Sie jquery aus yii2: 1. Bearbeiten Sie die Datei AppAsset.php und kommentieren Sie den Wert „yii\web\YiiAsset“ in der Variablen $depends aus. 2. Bearbeiten Sie die Datei main.php und fügen Sie die Konfiguration als „'yii“ hinzu. unter dem Feld „components“ \web\JqueryAsset' => ['js' => [],'sourcePath' => null,]“, um das JQuery-Skript zu entfernen.

Titel: Discuz-Hintergrundkonto-Login-Ausnahme, wie geht man damit um? Wenn Sie die Backend-Verwaltung des Discuz-Forensystems verwenden, kann es manchmal zu einer abnormalen Kontoanmeldung kommen. Dies kann verschiedene Gründe haben, darunter ein falsches Passwort, die Sperrung des Kontos, Probleme mit der Netzwerkverbindung usw. Wenn wir auf diese Situation stoßen, müssen wir das Problem durch einfache Fehlerbehebung und Bearbeitung lösen. Überprüfen Sie, ob die Kontonummer und das Passwort korrekt sind: Überprüfen Sie zunächst, ob die von Ihnen eingegebene Kontonummer und das Passwort korrekt sind. Stellen Sie beim Anmelden sicher, dass die Groß- und Kleinschreibung korrekt ist und dass das Passwort korrekt ist

Der Wechsel zwischen verschiedenen Anwendungen wird durch das Vor- und Zurückschalten von Prozessen erreicht. Hintergrund: Nachdem Linux ein Programm gestartet hat, wechselt es zur Ausführung in den Hintergrund und möchte unter Linux weiterarbeiten. Unter Linux können Sie die folgenden Methoden verwenden, um ein Programm zu starten und im Hintergrund zu beenden, den Prozess aber trotzdem weiterlaufen zu lassen: 1. Linux startet ein Programm, das im Hintergrund ausgeführt wird. 1. Verwenden Sie nohup und &: $nohupyour_program& Verwenden Sie den Befehl nohup Das Programm ignoriert das Auflegesignal (SIGHUP), sodass das Programm auch dann weiterläuft, wenn Sie das Terminal verlassen. Das &-Symbol bewirkt, dass das Programm im Hintergrund ausgeführt wird. 2. Benutzen Sie Strg+Z: Wenn Sie das Programm im Vordergrund gestartet haben, können Sie ct verwenden
