Hallo Leute, ich habe viele Yii 2 RBAC Tutorials gesehen, aber ich kann nicht wirklich verstehen, wie man die Regeln implementiert. In der Yii 2-Anleitung wurde erläutert, wie Regeln erstellt werden, aber nicht wirklich, wie sie im Verhalten des Controllers oder anderswo implementiert werden können. Ich brauche wirklich eine Erleuchtung in Bezug auf diese Angelegenheit.
Was ich jetzt habe, ist ein System zum Hochladen von Dokumenten, wo ich zwei Rollen habe, nämlich admin & amp; Encoder. Im Grunde kann die Admin-Rolle alles tun, während die Encoder-Rolle nur erstellen, anzeigen, besitzen, aktualisieren und besitzen kann. Ich habe bereits eine Regel namens codedBy erstellt.
Dies ist mein Code in meiner EncoderRule
%Vor%Ich speichere die Daten in der "Dokument" -Tabelle, wo ich ein Feld namens "encoded_by" habe Ich hoffe, ihr könnt mir dabei helfen. Vielen Dank !!!
Wenn ich Sie klar verstehe, möchten Sie die Yii2 RBAC Rule verwenden, um einige Berechtigungen für die Systembenutzer (Admin und Encoder) zu implementieren. Nun, das ist einigermaßen geradlinig.
Yii2 verfügt zu diesem Zweck über Tabellen. Diese Tabellen sind ich. auth_assignment ii. auth_item iii. auth_item_child iv. auth_rule
Zuerst müssen Sie wählen, welchen AuthManager Sie entweder den PhpManager oder den DBManager verwenden möchten, aber ich würde Ihnen raten, den DBManager zu benutzen, weil das ist, was ich benutze
Wenn Sie die Yii2 Basic-Vorlage verwenden, fügen Sie die folgenden Codezeilen unter Komponenten in der web.php
hinzu %Vor%Wenn Yii2 Advanced template , fügen Sie die folgenden Codezeilen unter Komponenten in main.php im Ordner \ common \ config
hinzuNachdem Sie die oben genannten Schritte ausgeführt haben,
Der obige Code erzeugt / erstellt die vier Tabellen, die früher automatisch in der Datenbank für Sie aufgelistet wurden
Erstellen Sie Ihre RBAC-Regeln.
Dazu müssen Sie Berechtigungen und Rollen erstellen.
Für grundlegende Vorlage,
Siehe Ссылка , um zu sehen, wie es aussieht
Für erweiterte Vorlage, - Erstellen Sie die gleiche Datei, aber es wird in Konsole \ controllers \ RbacController.php
seinNachdem Sie all dies getan haben,
Wenn Sie alle oben genannten erfolgreich erstellt haben, können Sie so etwas tun, um zu wissen, ob ein Benutzer die Berechtigung hat
%Vor%Ich hoffe, das hilft ..
Ich kämpfe auch damit. Alles was ich bisher herausfinden konnte ist, dass $params['post']
absolut nicht für mich funktioniert. Ich weiß nicht, wo und was ich definieren soll, damit es funktioniert. Aber was ich herausfinden konnte basierend auf dem Beitrag von Joel Small , dass wenn ich es einfach so mache (ich möchte einfach den Zugriff auf ein Update-Formular verweigern, wenn es um den Zustand des Modells geht):
app \ rbac \ ZnwRule.php:
%Vor%und dann in ZnwController:
%Vor%Ich habe in yii2-admin definiert, dass ich eine Regel :
habeName: ZnwRule
Klasse: App \ rbac \ ZnwRule
und ich habe eine Berechtigung namens updatezd
:
name: updatezd
Regel: ZnwRule
Ich habe meine App mit einem Haupt-Controller gestartet, wo ich überprüfe, ob die Route in yii2-admin für eine bestimmte Rolle erlaubt ist, und alle anderen Controller erweitern diese. Nun, da ich mich mit Berechtigungen und Regeln beschäftigen musste, musste ich die Route auch zur Berechtigung hinzufügen. Ich bin mir sicher, dass es einfacher sein wird, aber zumindest scheint es so weit zu gehen. Es ist nicht viel, aber ich hoffe es hilft bis zu einem gewissen Grad.
Wenn Sie eine einfache Rollenprüfung benötigen, können Sie die Klasse AccessRule
auf neue Rollen erweitern, ohne in eine vollständige rollenbasierte Zugriffssteuerung einzutauchen. In diesem Tutorial finden Sie ausführliche Informationen: Einfachere rollenbasierte Autorisierung in Yii 2.0
Dies ist der einfachste Weg, um Rollen zu verstehen, zu implementieren und zu pflegen, jedoch werden Sie die umfassende Flexibilität, die RBAC bietet, aus Gründen der Einfachheit ausnutzen.
Vollständige Offenlegung: Ich bin der Autor des Blogposts.