Yii2 Implementierung der RBAC-Regel

8

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 !!!

    
C. Norris 26.02.2016, 08:31
quelle

3 Antworten

2

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

hinzu

Nachdem Sie die oben genannten Schritte ausgeführt haben,

  • Führen Sie yii migrate --migrationPath = @ yii / rbac / migrations von der Befehlszeile aus
  • aus

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,

  • Erstelle eine Datei und nenne sie RbacController.php im Ordner "commands"

Siehe Ссылка , um zu sehen, wie es aussieht

Für erweiterte Vorlage, - Erstellen Sie die gleiche Datei, aber es wird in Konsole \ controllers \ RbacController.php

sein

Nachdem Sie all dies getan haben,

  • Run yii rbac / init // Dies führt die actionInit () in der RbacController-Datei
  • aus

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 ..

    
Oyedele Femi 26.02.2016 08:59
quelle
1

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 :

habe
  

Name: ZnwRule

     

Klasse: App \ rbac \ ZnwRule

und ich habe eine Berechtigung namens updatezd :

erstellt
  

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.

    
user2511599 11.05.2017 13:36
quelle
0

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.

    
Abdul Mueid 11.06.2016 21:39
quelle

Tags und Links