Laravel Was ist eine Wache?

Lesezeit: 2 Minuten

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

Auth::attempt()

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

Benutzer-Avatar
Sam

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

Die Konfiguration finden Sie in Ihrer config/auth.php Datei. Ein Web Guard ist der traditionelle Cookie-Speicher – so dass der Web Guard Laravel anweist, Sitzungsinformationen auf klassische Weise zu speichern und abzurufen. Der API-Wächter hingegen verwendet Tokens. Sie würden also den API-Wächter verwenden, wenn Sie Benutzer und Anfragen mit einem API-Token im Header (Bearer) oder Abfrageparameter authentifizieren möchten.

Du kannst auch Erstellen Sie Ihre eigene Wache wenn Sie möchten, und es gibt auch diese gute Einführung Blogeintrag zum Thema von Matt Stauffer.

  • Ein Wächter kann auch ein Schutz für alles sein. Wie verhindern, dass ein kleiner Kauf von Tickern stattfindet: $this->preventMinorsGuard();. Kann so verwendet werden?

    – brnmonteiro

    11. Mai 2017 um 13:17 Uhr


Da ich dieselbe Frage hatte und die anderen Antworten mir nicht die Informationen lieferten, nach denen ich suchte (sie erklären perfekt, was eine Wache tut, aber nicht, warum Sie sich jemals Gedanken darüber machen sollten, ihre Methoden aufzurufen), werde ich eine andere Antwort geben.

Ich war mir auch nicht sicher über den Unterschied zwischen den Methoden, die von bereitgestellt werden auth() Helfer und Methoden, die von der Wache selbst bereitgestellt werden auth()->guard()da sie anscheinend dasselbe taten.

Eine schnelle dd(auth()) zeigt, dass es eine Instanz von zurückgibt AuthManager. So können wir diese Klasse in nachschlagen der Quellcode: Auf der Unterseite AuthManager.php da ist ein __call() magische Methode der alle undefinierten Anrufe an seinen eigenen weiterleitet guard() Methode.

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

Dies zeigt uns deutlich, dass die Methoden von auth() und auth()->guard() scheinen nicht nur dasselbe zu tun, sondern sind genau gleich. Solange also der Standardwächter verwendet werden soll, muss ein zusätzlicher ->guard() kann man beruhigt weglassen.

Ein Wächter ist eine Möglichkeit, die Logik bereitzustellen, die verwendet wird, um authentifizierte Benutzer zu identifizieren. Laravel bietet verschiedene Wächter wie Sessions und Tokens. Der Session Guard hält den Status des Benutzers bei jeder Anfrage durch Cookies aufrecht, und andererseits authentifiziert der Token Guard den Benutzer, indem er bei jeder Anfrage ein gültiges Token überprüft.

Die Guard-Rolle besteht darin, Routen zu authentifizieren

  1. Web Guard authentifiziert Webrouten
  2. Api Guard authentifiziert API-Routen.
  3. Für andere Benutzertypen authentifiziert zB der Admin-Wächter Admin-Routen und so weiter.
1352680cookie-checkLaravel Was ist eine Wache?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy