Was ist die richtige Methode für die Einrichtung einer Modul-Anmeldung, die von der Haupt-Website-Anmeldung getrennt ist, mit der "Basis" -Anwendungsvorlage?
Zum Beispiel habe ich ein "admin" -Modul, das eine Anmeldung erfordert. Ich brauche auch eine Benutzeranmeldung für die Hauptseite.
Ich habe Folgendes getan:
admin
Modul mit gii
tool models
Ordner im admin
Modul Ordner LoginForm.php
und User.php
in diesem Ordner (aktualisiert auch die Namespace-Deklarationen in diesen Dateien) AccessControl
Verhalten und Anmelde- / Abmeldeaktionen zu modules\admin\controllers\DefaultController.php
hinzugefügt
config\web.php
wie folgt aktualisiert:
app\modules\admin\Module.php
wie folgt aktualisiert:
Das Problem, das ich habe ist, dass, wenn ich versuche, auf eine Admin-Seite zuzugreifen, wenn ich nicht angemeldet bin, zeigt es das Login-Formular (das ist richtig). Beim Anmelden wird es jedoch nur auf die Hauptseite zurückgeleitet. Es sollte mich auf die Admin-Seite umleiten, auf die ich zugreifen wollte.
In DefaultController.php
hat es Folgendes (Standardcode):
Was ist der richtige Weg, dies zu tun, damit ich unabhängige Logins für das Admin-Modul und für die Haupt-Site haben kann? Ich möchte die "erweiterte Anwendungsvorlage" nicht verwenden, da dies zu unnötiger Komplexität führt.
Die Benutzerkomponente erlaubt Ihnen, ein returnUrl zu setzen, wobei der Getter erklärt wird: This method reads the return URL from the session. It is usually used by the login action which may call this method to redirect the browser to where it goes after successful authentication.
Empfohlen : Vor dem Verarbeiten der Daten setzen Sie den Rückgabewert durch Aufrufen von Yii::$app->user->setReturnUrl(Url::current());
(dies speichert die Seite, auf der sich der Benutzer in der Sitzung befand. Darüber hinaus können Sie GET-Parameter mit Url::current()
bearbeiten bevor Sie es an die Sitzung übergeben, und lassen Sie den Rahmen seine Magie machen.
Nicht empfohlen : Nach der Verarbeitung der Daten können Sie sich auf den Verweis (der in einigen Fällen nicht funktioniert) wie folgt verlassen
return Yii::$app->request->referrer ? $this->redirect(Yii::$app->request->referrer) : $this->goHome();
oder anstelle von goHome, das grundsätzlich zu app- & gt; homeUrl umleitet, das während der Modul-Init gesetzt werden kann, könnte man $this->redirect('your/admin/index');
Ich empfehle, die ['homeUrl' => 'your/admin/index']
während der Initialisierung des Moduls zu setzen, da Sie es möglicherweise auch für andere Funktionen benötigen, und Yii2 verwendet es als "Fallback" für einige Weiterleitungen.
Gehe zu config / web.php und füge es zu den Komponenten hinzu
%Vor%In DefaultController.php hat es folgendes (Standardcode):
%Vor%return Yii :: $ app- & gt; getResponse () - & gt; Weiterleitung (Yii :: $ app- & gt; backendUrlManager- & gt; baseUrl);
Am besten erstellen Sie einen neuen Controller im Admin-Modul, der Anmelde- und Abmeldeaktionen enthalten sollte. Weil Sie in Zukunft eine zusätzliche Logik hinzufügen können.
In dieser Login-Aktion können Sie dasselbe LoginForm verwenden.
Sie können in dieser Login-Aktion eine Weiterleitungs-URL angeben.
Admin-Modul-Klasse kann folgendermaßen aussehen:
%Vor%Tags und Links yii2