Laravel Was ist eine Wache?

76

Ich habe die eingebauten Auth-Controller durchgesehen und festgestellt, dass sie so etwas wie "Guards" verwenden. Bis jetzt habe ich diese, wenn ich meine eigenen Anmelde- / Registrierungsformulare erstellt habe, nie berührt und normalerweise nur Dinge getan wie:

Auth::attempt()

ohne jede Art von Wache. Ich habe versucht nachzuschlagen, was genau es ist, aber ich konnte keine Informationen darüber finden. Kann mir jemand erklären, was der Zweck der Wachen ist?

user1157885
quelle

Antworten:

91

Sie definieren, wie das System Informationen über Ihre Benutzer speichern und abrufen soll.

Sie finden die Konfiguration in Ihrer config/auth.phpDatei. Ein Web Guard ist der traditionelle Cookie-Store. Der Web Guard weist Laravel an, Sitzungsinformationen auf klassische Weise zu speichern und abzurufen. Der API-Schutz verwendet dagegen Token. Sie würden also den API-Schutz verwenden, wenn Sie Benutzer und Anforderungen mithilfe eines API-Tokens im Header (Träger) oder Abfrageparameter authentifizieren möchten.

Wenn Sie möchten, können Sie auch Ihre eigene Wache erstellen , und es gibt auch diesen guten einführenden Blog-Beitrag zum Thema von Matt Stauffer.

Jamkoko
quelle
3
Eine Wache kann auch ein Schutz für alles sein. Wie verhindern, dass ein kleiner Kauf Ticker vom Ereignis : $this->preventMinorsGuard();. Kann so verwendet werden?
Brnmonteiro
8

Ein Guard ist eine Möglichkeit, die Logik bereitzustellen, mit der authentifizierte Benutzer identifiziert werden. Laravel bietet verschiedene Wachen wie Sitzungen und Token. Der Sitzungswächter behält den Status des Benutzers in jeder Anforderung durch Cookies bei, und andererseits authentifiziert der Token-Schutz den Benutzer, indem er in jeder Anforderung ein gültiges Token überprüft.

sachinsuthariya
quelle
1

Da ich dieselbe Frage hatte und die anderen Antworten mir nicht die gesuchten Informationen lieferten (sie erklären perfekt, was ein Wachmann tut, aber nicht, warum Sie sich jemals Sorgen machen sollten, seine Methoden aufzurufen), werde ich eine andere Antwort geben.

Ich war mir auch nicht sicher über den Unterschied zwischen den vom auth()Helfer bereitgestellten Methoden und den vom Wachmann selbst bereitgestellten Methoden auth()->guard(), da sie anscheinend dasselbe taten.

Ein kurzer Überblick dd(auth())zeigt, dass eine Instanz von zurückgegeben wird AuthManager. Wir können diese Klasse also im Quellcode nachschlagen : Am Ende von AuthManager.php befindet sich eine __call() magische Methode, die alle undefinierten Aufrufe an ihre eigene guard()Methode weiterleitet .

public function __call($method, $parameters)
{
    return $this->guard()->{$method}(...$parameters);
}

Dies zeigt uns deutlich, dass die Methoden von auth()und auth()->guard()nicht nur dasselbe zu tun scheinen, sondern genau gleich sind . Solange der Standardschutz verwendet werden soll, kann ein zusätzlicher Schutz ->guard()problemlos weggelassen werden.

belasten
quelle
0

Die Schutzrolle besteht darin, Routen zu authentifizieren

  1. Web Guard authentifiziert Webrouten
  2. Api Guard authentifiziert API-Routen.
  3. Für andere Benutzertypen, z. B. Admin Guard, werden Administratorrouten usw. authentifiziert.
Hasnain Abid Khanzada
quelle