suchen
HeimBackend-EntwicklungPHP-TutorialVerwenden von Yii2 Rbac-Berechtigungen zur Steuerung des Menüs

In diesem Artikel werden hauptsächlich die relevanten Informationen des Menü-Beispiel-Tutorials der Yii2-rbac-Berechtigungssteuerung vorgestellt.

Im vorherigen Artikel habe ich Ihnen vorgestellt, wie man ein perfektes Backend erstellt Implementieren Sie rbac-Berechtigungen in yii2. Die Hintergrundkonstruktion und die rbac-Berechtigungssteuerung von yii2 sind im Steuerbeispiel-Tutorial perfekt implementiert. Wenn Sie es noch nicht implementiert haben, lesen Sie bitte zuerst den obigen Artikel und lesen Sie dann erneut diesen Artikel wird auf dieser Grundlage verbessert und ergänzt.

Einige Leute haben berichtet, dass sie nicht verstehen, wie man die Berechtigungen des endgültigen Menüs steuert, und sie können es nicht herausfinden, und es scheint, dass Sie es noch nicht fertig haben, also sind Sie es herumalbern! Es ist wirklich nicht so umfassend. Sehen wir uns heute an, wie wir perfekte Berechtigungen für das Menü erreichen können. Lassen Sie mich zunächst den Hauptinhalt auflisten. Wenn Sie ihn nicht benötigen, müssen Sie ihn nicht lesen. Ich möchte ihn nur mit denen teilen, die ihn benötigen.

Verwenden Sie die Menütabelle, um ein Menü hinzuzufügen

Die linke Menüergebnisverwaltung wird perfekt präsentiert

Anpassen Das Symbol vor dem Menü wird angezeigt. Kleine Symbole werden angezeigt nicht ohne Erlaubnis angezeigt werden

Nur ​​Schaltflächen mit Betriebsberechtigungen werden in der Rasteransicht angezeigt

Nun, das ist alles, wenn Sie andere Anforderungen an die Berechtigung haben Bitte hinterlassen Sie unten eine Nachricht. Wir werden gemeinsam kommunizieren und diskutieren. Schauen Sie sich zunächst das Bild an, um eine Vorschau auf die allgemeine Wirkung zu erhalten. Wie können Sie sonst Ihre Lernbegierde anregen?

Zuerst besuchen wir die Routing-Seite/dmin/route/index, wählen so weit wie möglich alles auf der linken Seite aus, verschieben es dann nach rechts und denken daran, es anzugeben Dem aktuellen Benutzer entsprechende Zugriffsberechtigungen zuweisen.

Als nächstes greifen Sie auf das Menü list/admin/menu/index zu und klicken auf Menü hinzufügen. Wenn Sie zu diesem Zeitpunkt keine Zugriffsberechtigung haben, erlauben Sie bitte vorübergehend dem aktuellen Benutzer den Zugriff auf alle Berechtigungen im As-Zugriff Datei der Konfigurationsdatei und fügen Sie nach dem Hinzufügen der Berechtigungen die as-Zugriffseinstellung hinzu. Denken Sie daran, sonst kommen Sie nicht zu mir zurück, wenn die Berechtigungen ablaufen.

Hier füllen wir zunächst die vier im Bild oben rot markierten Felder aus

Zum Beispiel: Wir möchten ein Menü der ersten Ebene „Berechtigung“ hinzufügen Management“

Bitte geben Sie „Berechtigungsverwaltung“ als Namen ein. Da es sich um ein Menü der ersten Ebene handelt, lassen Sie bitte den übergeordneten Namen leer. Für die Weiterleitung wählen wir hier „/admin/default/index“. Beachten Sie, dass Sie die Auswahl auf der linken Seite nach rechts verschieben müssen, wenn eine Route übereinstimmt.

Mapping ist eigentlich eine Frage der Sortierung. Wenn ich zum Beispiel zwei Menüs hinzufüge, liegt das mit dem Mapping-Wert 1 oben und das mit dem Mapping-Wert 2 unter 1. Wir füllen aus die Nummer 1 hier.

Über den Punkt „Daten“ sprechen wir später.

Fügen Sie es auf die gerade vorgestellte Weise hinzu. Lassen Sie uns ein Beispiel für das Hinzufügen eines sekundären Menüs „Berechtigungskontrolle“ geben.

Sie müssen hier nur den übergeordneten Namen mit dem Namen der ersten Ebene eingeben gerade erfolgreich hinzugefügt. Nur „Berechtigungsverwaltung“. Alles andere bleibt wie gewohnt. Wenn Sie nicht wissen, wie man funktioniert, lesen Sie es zweimal. Am besten fügen Sie hier alle Menüs für die Berechtigungsverwaltung hinzu, da wir sie als nächstes benötigen und Sie mehr üben können.

An dieser Stelle haben wir die Speisekarte hinzugefügt.

Sehen wir uns den nächsten Schritt an und verwenden wir das zuvor erstellte Hintergrund-Framework, um es anzuzeigen.

use mdm\admin\components\MenuHelper; 
echo dmstr\widgets\Menu::widget( [
'options' => ['class' => 'sidebar-menu'], 
'items' => MenuHelper::getAssignedMenu(Yii::$app->user->id), 
] );

Ist es nicht ganz einfach, was? Warum hat meins kein dmstr? Entschuldigung, ich habe es schon oft gesagt. Sie müssen das oben Gesagte zuerst lesen, bevor Sie dieses Menü kombinieren.

OK, aktualisieren Sie die Seite, um Ihr Menü anzuzeigen. Obwohl wir die gewünschte Funktionalität noch nicht vollständig implementiert haben, sollte Ihr Menü jetzt angezeigt werden.

Als nächstes geben wir unseren Fokus und Schwierigkeitsgrad ein. Wir müssen das kleine Symbol vor dem Menü implementieren und das Menü vervollständigen, um das Steuerelement auszublenden.

Erinnern Sie sich noch daran, dass bei der ersten Erstellung des Menüs die einzige Option, die nicht ausgefüllt war, „Daten“ war? Zur Vereinfachung nachfolgender Vorgänge füllen wir hier die Symbole und ausgeblendeten Optionen gemeinsam aus. Nehmen wir als Beispiel das Sekundärmenü „Backend-Benutzerverwaltung“ im ersten Screenshot, um Änderungen vorzunehmen. Machen Sie einen Screenshot und werfen Sie einen Blick auf den aktuellen Status unserer Speisekarte.

Bitte geben Sie auf der Aktualisierungsseite unbedingt den folgenden Code ein. Wenn Sie neue Ideen haben, befolgen Sie bitte auch meine Ideen, bevor Sie Änderungen vornehmen, da wir diese später durchführen müssen.

{"icon": "fa fa-user", "visible": false}

Ja, was wir für dieses „Daten“-Element ausfüllen, ist ein JSON-Code. Als nächstes nehmen wir auch geringfügige Änderungen am Code für die Anzeige des Menüs vor . Damit es für jeden bequem ist, den Code hier zu lesen, können Sie ihn später weiter verpacken und optimieren.

use mdm\admin\components\MenuHelper; 
<?php 
$callback = function($menu){ 
$data = json_decode($menu[&#39;data&#39;], true); 
$items = $menu[&#39;children&#39;]; 
$return = [ 
&#39;label&#39; => $menu[&#39;name&#39;], 
&#39;url&#39; => [$menu[&#39;route&#39;]], 
]; 
//处理我们的配置 
if ($data) { 
//visible 
isset($data[&#39;visible&#39;]) && $return[&#39;visible&#39;] = $data[&#39;visible&#39;]; 
//icon 
isset($data[&#39;icon&#39;]) && $data[&#39;icon&#39;] && $return[&#39;icon&#39;] = $data[&#39;icon&#39;]; 
//other attribute e.g. class... 
$return[&#39;options&#39;] = $data; 
} 
//没配置图标的显示默认图标 
(!isset($return[&#39;icon&#39;]) || !$return[&#39;icon&#39;]) && $return[&#39;icon&#39;] = &#39;fa fa-circle-o&#39;; 
$items && $return[&#39;items&#39;] = $items; 
return $return; 
}; 
//这里我们对一开始写的菜单menu进行了优化
echo dmstr\widgets\Menu::widget( [ 
&#39;options&#39; => [&#39;class&#39; => &#39;sidebar-menu&#39;], 
&#39;items&#39; => MenuHelper::getAssignedMenu(Yii::$app->user->id, null, $callback), 
] ); ?>

是的,你没有看错,代码是有点长,我们来简单分析分析。其实我们这里的$callback方法也只是针对上面我们添加菜单的"数据"项进行的分析。不难看出,我们对icon和visible分别进行了判断,并追加到当前menu中。

到此,我们费了一番波折终于实现菜单加icon和设置菜单的隐藏。如果你有其他的属性需要进行配置,此处仍然可以继续单独配置。

现在,我们还有两个任务仍待完成,要完成接下来的两个任务,为了大家的方便,建议你的项目可以自定义配置gii模版,不支持自定义gii模板的可以参考自定义gii模版 当你发现我们后面需要做的功能,我觉得你会赞叹我们这里的操作。

为了方便操作,我们这里增加一个测试表test,我们先用未做修改的gii模版生成一份model+curd。我们先把test/*的所有权限分配给当前登录的用户,并添加一条数据。打开/test我们可以正常看到下面的截图,注意图中的两个标记。

然后我们打开test/index.php文件,对标记的两个地方进行如下修改

use mdm\admin\components\Helper; 
<?php 
//没有创建权限不显示按钮 
if(Helper::checkRoute(&#39;create&#39;)) { 
echo Html::a(&#39;Create Test&#39;, [&#39;create&#39;], [&#39;class&#39; => &#39;btn btn-success&#39;]); 
} ?> 
<?= GridView::widget([ 
// ...... 
&#39;columns&#39; => [ 
// ...... 
[ 
&#39;class&#39; => &#39;yii\grid\ActionColumn&#39;, 
&#39;template&#39; => Helper::filterActionColumn(&#39;{view}{update}{delete}&#39;), 
], 
], 
]); ?>

现在我们刷新下页面/test再看看,好像没什么变化嘛。别急,我们现在撤销当前用户的/test/create 权限和/test/update权限,然后你在刷新下页面看看效果,我们截图看看。

也就是说我们没有权限的按钮消失了,当你手动访问/test/create的时候你会发现也会提醒你没有权限。

如果你的gii模板是自定义的,相信你会迅速在其生成的模板中所有的操作上添加权限控制的,是不是很happy

最后,我们的菜单menu关于权限控制的讲解基本也就结束了,长篇大论,仔细回想起来也没多少东西,倒是希望能帮到你一二

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

如何解决Yii2下session跨域名共存的问题

Das obige ist der detaillierte Inhalt vonVerwenden von Yii2 Rbac-Berechtigungen zur Steuerung des Menüs. 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
Wie funktioniert der Php -Typ -Hinweis, einschließlich Skalartypen, Rückgabetypen, Gewerkschaftstypen und nullbaren Typen?Wie funktioniert der Php -Typ -Hinweis, einschließlich Skalartypen, Rückgabetypen, Gewerkschaftstypen und nullbaren Typen?Apr 17, 2025 am 12:25 AM

PHP -Typ -Eingabeaufforderungen zur Verbesserung der Codequalität und der Lesbarkeit. 1) Tipps zum Skalartyp: Da Php7.0 in den Funktionsparametern wie int, float usw. angegeben werden dürfen. 3) Eingabeaufforderung für Gewerkschaftstyp: Da Php8.0 in Funktionsparametern oder Rückgabetypen angegeben werden dürfen. 4) Nullierstyp Eingabeaufforderung: Ermöglicht die Einbeziehung von Nullwerten und Handlungsfunktionen, die Nullwerte zurückgeben können.

Wie handelt es sich bei PHP -Objektklonen (Klonschlüsselwort) und der __clone Magic -Methode?Wie handelt es sich bei PHP -Objektklonen (Klonschlüsselwort) und der __clone Magic -Methode?Apr 17, 2025 am 12:24 AM

Verwenden Sie in PHP das Klonschlüsselwort, um eine Kopie des Objekts zu erstellen und das Klonierungsverhalten über die \ _ \ _ Clone Magic -Methode anzupassen. 1. Verwenden Sie das Klonschlüsselwort, um eine flache Kopie zu erstellen und die Eigenschaften des Objekts, nicht die Eigenschaften des Objekts zu klonen. 2. Die \ _ \ _ Klonmethode kann verschachtelte Objekte tief kopieren, um flache Kopierprobleme zu vermeiden. 3. achten Sie darauf, dass kreisförmige Referenzen und Leistungsprobleme beim Klonen vermieden werden, und optimieren Sie die Klonierungsvorgänge, um die Effizienz zu verbessern.

PHP vs. Python: Anwendungsfälle und AnwendungenPHP vs. Python: Anwendungsfälle und AnwendungenApr 17, 2025 am 12:23 AM

PHP eignet sich für Webentwicklungs- und Content -Management -Systeme, und Python eignet sich für Datenwissenschafts-, maschinelles Lernen- und Automatisierungsskripte. 1.PHP hat eine gute Leistung beim Erstellen von schnellen und skalierbaren Websites und Anwendungen und wird üblicherweise in CMS wie WordPress verwendet. 2. Python hat sich in den Bereichen Datenwissenschaft und maschinelles Lernen mit reichen Bibliotheken wie Numpy und TensorFlow übertrifft.

Beschreiben Sie verschiedene HTTP-Caching-Header (z. B. Cache-Control, ETAG, Last-modifiziert).Beschreiben Sie verschiedene HTTP-Caching-Header (z. B. Cache-Control, ETAG, Last-modifiziert).Apr 17, 2025 am 12:22 AM

Zu den wichtigsten Spielern in HTTP-Cache-Headern gehören Cache-Control, ETAG und Last-modifiziert. 1.Cache-Control wird verwendet, um die Richtlinien zu kontrollieren. Beispiel: Cache-Control: max-ay = 3600, öffentlich. 2. ETAG überprüft Ressourcenänderungen durch eindeutige Identifikatoren, Beispiel: ETAG: "686897696A7C876B7E". 3. Last-modifiziert gibt die letzte Änderungszeit der Ressource an, Beispiel: Last-Modified: Mi, 21okt201507: 28: 00GMT.

Erklären Sie sicheres Kennwort -Hashing in PHP (z. B. password_hash, password_verify). Warum nicht MD5 oder SHA1 verwenden?Erklären Sie sicheres Kennwort -Hashing in PHP (z. B. password_hash, password_verify). Warum nicht MD5 oder SHA1 verwenden?Apr 17, 2025 am 12:06 AM

In PHP sollten die Funktionen für Passwort_Hash und passwart_verify verwendet werden, um sicheres Passwort -Hashing zu implementieren, und MD5 oder SHA1 sollte nicht verwendet werden. 1) Passwort_hash generiert einen Hash, der Salzwerte enthält, um die Sicherheit zu verbessern. 2) Passwort_Verify prüfen Sie das Passwort und sicherstellen Sie die Sicherheit, indem Sie die Hash -Werte vergleichen. 3) MD5 und SHA1 sind anfällig und fehlen Salzwerte und sind nicht für die Sicherheit der modernen Passwort geeignet.

PHP: Eine Einführung in die serverseitige SkriptsprachePHP: Eine Einführung in die serverseitige SkriptspracheApr 16, 2025 am 12:18 AM

PHP ist eine serverseitige Skriptsprache, die für dynamische Webentwicklung und serverseitige Anwendungen verwendet wird. 1.PHP ist eine interpretierte Sprache, die keine Zusammenstellung erfordert und für die schnelle Entwicklung geeignet ist. 2. PHP -Code ist in HTML eingebettet, wodurch es einfach ist, Webseiten zu entwickeln. 3. PHP verarbeitet die serverseitige Logik, generiert die HTML-Ausgabe und unterstützt Benutzerinteraktion und Datenverarbeitung. 4. PHP kann mit der Datenbank interagieren, die Einreichung von Prozessformularen und serverseitige Aufgaben ausführen.

PHP und das Web: Erforschen der langfristigen AuswirkungenPHP und das Web: Erforschen der langfristigen AuswirkungenApr 16, 2025 am 12:17 AM

PHP hat das Netzwerk in den letzten Jahrzehnten geprägt und wird weiterhin eine wichtige Rolle bei der Webentwicklung spielen. 1) PHP stammt aus dem Jahr 1994 und ist aufgrund seiner Benutzerfreundlichkeit und der nahtlosen Integration in MySQL die erste Wahl für Entwickler. 2) Zu den Kernfunktionen gehört das Generieren dynamischer Inhalte und die Integration in die Datenbank, sodass die Website in Echtzeit aktualisiert und auf personalisierte Weise angezeigt wird. 3) Die breite Anwendung und das Ökosystem von PHP hat seine langfristigen Auswirkungen angetrieben, steht jedoch auch mit Versionsaktualisierungen und Sicherheitsherausforderungen gegenüber. 4) Leistungsverbesserungen in den letzten Jahren, wie die Veröffentlichung von PHP7, ermöglichen es ihm, mit modernen Sprachen zu konkurrieren. 5) In Zukunft muss PHP sich mit neuen Herausforderungen wie Containerisierung und Microservices befassen, aber seine Flexibilität und die aktive Community machen es anpassungsfähig.

Warum PHP verwenden? Vorteile und Vorteile erläutertWarum PHP verwenden? Vorteile und Vorteile erläutertApr 16, 2025 am 12:16 AM

Zu den Kernvorteilen von PHP gehören einfacher Lernen, starke Unterstützung für Webentwicklung, reiche Bibliotheken und Rahmenbedingungen, hohe Leistung und Skalierbarkeit, plattformübergreifende Kompatibilität und Kosteneffizienz. 1) leicht zu erlernen und zu bedienen, geeignet für Anfänger; 2) gute Integration in Webserver und unterstützt mehrere Datenbanken. 3) leistungsstarke Frameworks wie Laravel; 4) hohe Leistung kann durch Optimierung erzielt werden; 5) mehrere Betriebssysteme unterstützen; 6) Open Source, um die Entwicklungskosten zu senken.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools