2016-05-20 21 views
2

Ich habe eine Rolle namens "neu". Während ich es nicht explizit festlege, möchte ich, dass es die Standardrolle ist, sobald sich ein Benutzer registriert. Ich benutze yii2-user und yii2-rbac Erweiterung von dektrium.Yii2 RBAC respektiert nicht Standard-Rolleneinstellung

Ich habe folgendes in meine Komponenten ...

'authManager' => [ 
    'class' => 'yii\rbac\DbManager', 
    'defaultRoles' => ['new'], 
], 

Allerdings gibt folgende Formel falsch ...

if (Yii::$app->user->can('new')) 

Und gibt folgende Formel ein leeres Array zu ...

print_r(Yii::$app->authManager->getRolesByUser(Yii::$app->user->identity->id)); 

Ich bin mir nicht sicher, wo ich suchen soll. Ich habe überprüft, ob die neue Rolle in den RBAC-Konfigurationsansichten ordnungsgemäß eingerichtet wurde.

Aus irgendeinem Grund respektiert entweder Yii2 nicht meine defaultRole-Konfiguration, oder meine Erwartung ist falsch von dieser Einstellung. Schätze jede Hilfe. Diese

Antwort

0

:

Yii::$app->user->can('new') 

sollte funktionieren (sollte true zurück), stellen Sie sicher, dass Sie nicht defaultRoles woanders in Anwendung Config overrided haben (dies ist häufiger Fehler vor allem in fortgeschrittener app).

Ich würde empfehlen zu überprüfen, was Yii::$app->authManager->defaultRoles direkt davor enthält. Es scheint, als ob Ihre new Rolle nicht hinzugefügt wurde.

In anderen Worten, RBAC respektieren defaultRoles Option, so ist es Ihr Fehler.

Beachten Sie auch, dass dies:

Yii::$app->authManager->getRolesByUser($userId); 

gibt alle Rollen ohne Verzug. Das ist Absicht.

jedoch

Yii::$app->authManager->getRoles(); 

gibt alle Rollen einschließlich Standard.

+0

Hallo Ich habe eine print_r (Yii :: $ app-> authManager-> defaultRoles) und bemerkte, dass das Array leer ist. Aus irgendeinem Grund wird es nicht eingestellt. Ich habe auf der Default/Index Seite getestet. Irgendwelche Ideen. –

+0

@ShahidThaika Überprüfen Sie, ob es von den von Ihnen verwendeten Erweiterungen überschrieben wird. Überprüfen Sie ihre Dokumente, vielleicht gibt es eine andere Möglichkeit, es zu setzen. Was ich geschrieben habe, funktioniert perfekt ohne Erweiterungen. – arogachev

+0

Ja, ich glaube nicht, dass die Erweiterung dieses Feld respektiert, weil ich gerade eine neue Installation und einen Test ohne Erfolg durchgeführt habe. –