Was ist eigentlich protected $guard im Laravel Model

Gleich vorweg! Im Laravel Model gibt es mehrere protected Klassenvariablen die durch die Vererbung von Models bzw. Authenticatable im eigenen Model verfügbar sind. So habt ihr bestimmt schon mit protected $fillable und protected $guarded oder protected $hidden zu tun gehabt?

Leicht zu verwechseln mit $guarded ist nun $guard. Allerdings schützt $guarded nur das Model vor Mass Assignment. Also für unerwünschten modifizieren / updated oder erstellen eines Datenbankeintrages für die Tabelle für welches das Model steht. Hier eine genaue Erklärung zum Thema Mass Assignment.

Die Member $guard allerdings wird bei der Authentifizierung / Authentification benötigt. Sie gibt an welcher Guard für dieses Model zuständig ist. Es gibt bei Laravel von Hause aus zwei Guards. Ihr findet sie definiert in der config/auth.php.

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
            'hash' => false,
        ],

        // neuer Guard
        'customer' => [
            'driver' => 'session',
            'provider' => 'customers',            
        ],   
[...]
    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Models\User::class,
        ],
        // neuer Provider
        'customers' => [
            'driver' => 'eloquent',
            'model' => App\Models\Customer::class,
        ],

Wie ihr bereits am Code erkennt, habe ich im Beispiel ein Multiple Login. Soll heißen, einmal für die Kunden und einmal für die Admins / Mitarbeiter (users) eines Laravel angelehnten Shops.

Wenn sich ein Kunde nun einloggt wird seine Anfrage an den LoginController weitergeleitet. Im Constructor des LoginControllers bestimmen wir mit welchem Authentifizierungs Guard er die Anfrage kontrollieren soll.

class LoginController extends Controller
{
    [...]
    public function __construct()
    {
        $this->middleware('guest:customer')->except('logout'); 
    }
[...]
}


Leave a Comment

Your email address will not be published. Required fields are marked *

*

*

Empfholende Artikel


Laravel – Service, Repository Pattern

February 6, 2021

Ein wichtiger Baustein der Softwareentwicklung ist die Softwarearchitektur. Ab einer bestimmten Größe steht und fällt, meines Erachtens, ein Projekt mit der Softwarearchitektur. Damit ist nicht gemeint, das prozedural geschriebener Code perse schlecht ist. Im Gegenteil. In der Vergangenheit habe ich mit prozedural geschriebenen Code gute Software gebaut die teilweise bis heute läuft. Ich erinnere mich […]

Laravel Model kurz mal erklärt

January 26, 2021

Heute mal leichte Kost. Laravel Model. Was ist das und was stellt man damit an, wie erstellt man ein Model und was kann es so alles. Genug der langen Worte, fangen wir an! Was ist ein Model? Dafür blicken wir auf ein DesignPattern der Programmierung und zwar dem MVC Muster. MVC steht für Model, View […]

JWT in Laravel einrichten – Kurz mal erklärt

January 19, 2021

Ein sehr großes Topic vor beginn einer neuen Applikation ist die Authentifizierung. Bei der Hypoport AG in Berlin wurde bei einem Projekt ein ganzer Monat mit mehreren Entwicklerteams das Thema Login geplant. In anderen Projekten, die sicher laufen sollen, verhält sich das ähnlich. Deswegen sollte das Thema von Anfang an immer gut durchdacht sein. Erspart […]

Laravel config Datei anlegen

December 1, 2020

Ich musste mal bei einer bestehenden Laravel Installation eine Paypal Integration bei einem Kunden vornehmen. Nebenbei bemerkt möchte ich das mal loswerden. Paypal hat eine schreckliche Dokumentation. Sie ist überhaupt nicht intuitiv. Aber das ist überhaupt ein anderes Thema. Ich installierte im Projekt über den Composer die Paypal SDK: Zusätzlich legte ich mir einen neuen […]

Laravel Mass Assignment – kurz erklärt

November 10, 2020

Jeder der mit Laravel und einer Datenbank arbeitet kommt zwangsläufig auf das Thema Mass Assignment. Was ist das eigentlich? Beziehungsweise ihr kennt diese HTTP 500 Fehlermeldung: Add [name] to fillable property to allow mass assignment on [App\Models\Profil]. Stellen wir uns vor wir haben eine Website mit einem geschütztem Dashboard für unsere Nutzer. Ein registrierter Nutzer […]

Laravel Testing – Das kleine Problem mit dem ENUM bei SQLITE

November 7, 2020

Wer sein Code Testgetrieben schreibt und bei Laravel seine Testdatenbank auf SQLITE geschaltet hat, wird eventuell auf ein SQLITE Problem treffen, wenn man in seiner Migration Datei ein Enum Feld hat. Da kann zum Beispiel solch eine Fehlermeldung kommen: Hier ein kleiner Hinweis wie man seine Testdatenbank auf Sqlite einstellt. Geht dazu in die phpunit.xml […]