Yii2 Globale filter/Verhalten zu zwingen, Benutzer zu authentifizieren ersten
In meinem Yii2 Anwendung, die ich bin versucht zu erzwingen, dass alle Benutzer authentifiziert werden. Wenn Sie nicht bereits authentifiziert ist, sollten Sie werden auf die Anmeldeseite umgeleitet.
In Yii1 ich Tat dies, indem Sie eine Klasse erstellen, die wäre zu überprüfen, ob ein Benutzer angemeldet war, und das anbringen dieser Klasse, um die onBeginRequest
Verhalten in meinem Haupt-config-Datei.
//Yii 1
'behaviors' => array(
'onBeginRequest' => array(
'class' => 'application.components.RequireLogin',
)
),
Wie kann ich das gleiche Verhalten in Yii2? Ich weiß, dass ich verwenden können, Verhalten zu tun, aber ich wan ' T, um dieses Verhalten zu meinem Haupt-config-Datei, so werden alle Anforderungen geprüft, die für die Authentifizierung.
Den arbeiten Verhalten Methode sieht wie folgt aus:
//Yii2
public function behaviors() {
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'actions' => ['login', 'error'],
'allow' => true,
],
[
'allow' => true,
'roles' => ['@'],
],
],
],
];
}
- Haben Sie versucht, indem eine accesscontrol der basecontroller?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, so hatte ich den folgenden code hinzuzufügen unten
'components' => [...]
Lesen Sie mehr über das format: http://www.yiiframework.com/doc-2.0/guide-concept-configurations.html#configuration-format
'as someNameHere' => ...
ist die syntax für das hinzufügen von Verhalten. Suchen Sie hier nach doc. Ich Schreibe nur das, weil ich verbrachte einige Stunden finden, dass heraus.site/login
denn diese wird aufgerufen, wenn der Benutzer nicht eingeloggt ist und keine Regel gilt. Dies kann geändert werden in der Konfiguration (siehe hier für mehr Informationen), wenn die login-action hat einen anderen Namen oder einem anderen controller.error
aus den erlaubten Aktionen, die es bewirkt, dass ein weißer Bildschirm. Früher konnte man dies nutzen, um das umleiten aller, die war nicht angemeldet, Sie können jedoch nicht mehr die Umleitung von 404-Fehlern usw., da einige updates. Ich fand die aktuelle Art und Weise hier github.com/yiisoft/yii2/issues/11054#issuecomment-198310042Ich bin nicht wirklich versiert in Yii2 (aber sehr viel, so in Yii1).
One-Lösung, die eingesetzt werden können, in Yii1 und ich denke, auch in Yii2 ist mit einer filter-Methode, die in einem master-Controller-Klasse. Normalerweise eine einzelne controller dient als master-controller. Wenn Sie keine haben, erstellen Sie es und jeder sollte es ausweiten. Sie implementieren können, dies wohl nicht als filter, sondern auch in anderen Methoden des 'master controller' (init() ?)
Wenn alle Aktivität wird durch die controller-Klasse ist, dann bist du festgelegt.