Nachdem ich mit yii2 Access Control Filter herumgespielt habe, kam ich um diese Answer herum, was mir sehr hilft. Ich habe versucht, den Zugriff zu beschränken, indem Sie folgendermaßen vorgehen:Yii2 Eingeschränkter ZugriffControlFilter Logic
Basierend auf this Tutorial habe ich eine AccessRule erstellt. Ich habe die folgende Logik hinzugefügt.
...
// Check if the user is logged in, and the roles match
} elseif (!$user->getIsGuest() && $role === '#' && $user->can("admin")) {
return true;
} elseif (!$user->getIsGuest() && $role === '~' && $user->can("admin")) {
return true;
}
...
Während die $user->can("admin")
Methode aus this einfachen Authentifizierungsmodul yii2 Benutzer kommt.
Also meine Idee ist es, alles standardmäßig zu beschränken und Aktionen/Seiten zu öffnen, falls nötig.
ich folgendes meiner config (web.php)
...
'as beforeRequest' => [
'class' => 'yii\filters\AccessControl',
'ruleConfig' => [
'class' => 'app\components\AccessRule'
],
'rules' => [
[
'allow' => true,
'roles' => ['#'],
],
...
Das heißt, der Benutzer, der die Rolle Admin hat hinzugefügt wird erlaubt, alles zu tun. Alle anderen Rollen/Benutzer (Gäste, @
oder ~
(angemeldet, aber keine Admin-Rolle)) dürfen jetzt nichts mehr tun.
Natürlich sollte ein Benutzer mit der Rolle ~
etwas tun dürfen. So öffnete ich die Erlaubnis für einen Controller und hinzugefügt, um das folgende Verhalten
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'ruleConfig' => [
'class' => AccessRule::className()
],
'only' => ['index'],
'rules' => [
[
'actions' => ['index'],
'allow' => true,
'roles' => ['~'],
],
],
],
...
Unfortanatly den Benutzer mit der Rolle ~
noch kann nicht Zugang der Aktion Index für diese spezified Controller.
So ist meine Logik/Denken unpassend?
Ist das Problem, dass die Sequenz die Zugriffskontrollfilter aufruft?
versuchen @ statt ~ – bxN5
@Roman Controller-Verhalten zu '@' geändert; Benutzer kann immer noch nicht auf die Seite – Luc