Yii2 - Modulanmeldung in der Basisanwendungsvorlage

10

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:

  1. Erstellt admin Modul mit gii tool
  2. Erstellt models Ordner im admin Modul Ordner
  3. Platziert LoginForm.php und User.php in diesem Ordner (aktualisiert auch die Namespace-Deklarationen in diesen Dateien)
  4. AccessControl Verhalten und Anmelde- / Abmeldeaktionen zu modules\admin\controllers\DefaultController.php hinzugefügt
  5. config\web.php wie folgt aktualisiert:

    %Vor%
  6. app\modules\admin\Module.php wie folgt aktualisiert:

    %Vor%

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):

%Vor%

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.

    
GSTAR 06.04.2016, 19:26
quelle

4 Antworten

1

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');

sagen

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.

    
Ravenous 20.03.2017 07:24
quelle
0

goBack() wird standardmäßig auf homeUrl gesetzt, wenn% code_% für den Benutzer nicht festgelegt wurde.

Warum nicht einfach umleiten?

%Vor%     
Alex 07.04.2016 07:59
quelle
0

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);

    
Saibal Roy 24.03.2017 09:29
quelle
0

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%     
quelle

Tags und Links