Zum Hauptinhalt springen

Was ist Authentifizierung

Authentifizierung ist der Vorgang, mit dem festgestellt wird, wer der zugreifende Benutzer ist. In Webanwendungen nimmt ein Login-Formular E-Mail und Passwort entgegen und speichert bei korrekten Angaben die Benutzerinformationen in der Session. Bei nachfolgenden Anfragen wird der Benutzer über diese Session identifiziert. Die Authentifizierung in Laravel basiert auf zwei Konzepten: „Guards” und „Providers”.
  • Guards: Definieren, wie Benutzer bei jeder Anfrage authentifiziert werden. Der Standard ist der session-Guard, der Zustand über Session und Cookies verwaltet.
  • Providers: Definieren, wie Benutzer aus der Datenbank abgerufen werden. Der Standard nutzt Eloquent.
Die Konfigurationsdatei für die Authentifizierung ist config/auth.php. Für die meisten Webanwendungen reicht die Standardkonfiguration aus.

Authentifizierung per Starter Kit

Wenn Sie eine Anwendung mit laravel new erstellen und ein Starter Kit auswählen, werden Login, Registrierung, Passwort-Reset und weitere Auth-Funktionen automatisch erzeugt. Das ist der empfohlene Weg.
1

Anwendung erstellen

Legen Sie die Anwendung mit dem Laravel Installer an. Unterwegs erscheint eine Auswahl für das Starter Kit.
laravel new my-app
Als Starter Kit stehen React, Vue, Livewire und Svelte zur Auswahl. Wählen Sie es entsprechend Ihres Tech-Stacks aus.
2

Frontend-Abhängigkeiten installieren

cd my-app
npm install && npm run build
3

Datenbank vorbereiten

Prüfen Sie die Datenbank-Konfiguration in .env und führen Sie die Migrationen aus.
php artisan migrate
Die initialen Migrationen einschließlich der Tabelle users werden angewendet.
4

Entwicklungsserver starten

composer run dev
Wenn Sie im Browser http://localhost:8000 aufrufen, sehen Sie in der Navigation die Links „Register” und „Log in”. Rufen Sie /register auf und registrieren Sie einen Benutzer.
Mit einem Starter Kit stehen Ihnen sofort die folgenden Funktionen zur Verfügung:
FunktionURL
Benutzerregistrierung/register
Login/login
Passwort-Reset/forgot-password
E-Mail-Bestätigung/email/verify
Profil bearbeiten/settings/profile
Der vom Starter Kit erzeugte Code (Controller, Routen, Views) liegt vollständig in Ihrer eigenen Anwendung. Sie können ihn frei anpassen.

Verfügbare Starter Kits

React

Baut eine moderne SPA mit React 19, TypeScript, Tailwind und shadcn/ui. Dank Inertia behalten Sie das serverseitige Routing bei und nutzen gleichzeitig ein React-Frontend.

Vue

Setzt auf die Vue Composition API, TypeScript, Tailwind und shadcn-vue. Wie bei React wird Inertia zur Verbindung mit dem Server verwendet.

Livewire

Verwendet Livewire, sodass Sie dynamische UIs allein mit PHP aufbauen. Ideal für Teams, die auf Blade-Templates fokussiert sind oder ohne JavaScript-Framework auskommen möchten. Enthält die Komponentenbibliothek Flux UI.

Svelte

Verwendet Svelte 5, TypeScript, Tailwind und shadcn-svelte. In Kombination mit Inertia bauen Sie eine moderne SPA.

Die Auth-Facade

Mit der Facade Auth rufen Sie Informationen des aktuell angemeldeten Benutzers ab und prüfen dessen Authentifizierungsstatus.

Angemeldeten Benutzer abrufen

use Illuminate\Support\Facades\Auth;

// Aktuellen Benutzer abrufen
$user = Auth::user();

// Nur die Benutzer-ID abrufen
$id = Auth::id();
In Controllern lässt sich der Benutzer auch über das Request-Objekt abrufen.
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class DashboardController extends Controller
{
    public function index(Request $request)
    {
        $user = $request->user();

        return view('dashboard', ['user' => $user]);
    }
}

Authentifizierungsstatus prüfen

Auth::check() liefert true/false, je nachdem ob ein Benutzer angemeldet ist.
use Illuminate\Support\Facades\Auth;

if (Auth::check()) {
    // angemeldet
} else {
    // nicht angemeldet
}
In Blade-Templates sind die Direktiven @auth und @guest praktisch.
@auth
    <p>Hallo, {{ Auth::user()->name }}</p>
    <a href="/logout">Logout</a>
@endauth

@guest
    <a href="/login">Login</a>
    <a href="/register">Registrieren</a>
@endguest

Routen schützen

Um Routen ausschließlich für angemeldete Benutzer zugänglich zu machen, verwenden Sie die Middleware auth.
// routes/web.php

// Nur für angemeldete Benutzer erreichbar
Route::get('/dashboard', function () {
    return view('dashboard');
})->middleware('auth');
Nicht angemeldete Nutzer werden automatisch zu /login weitergeleitet. Um mehrere Routen gleichzeitig zu schützen, verwenden Sie eine Gruppe.
Route::middleware('auth')->group(function () {
    Route::get('/dashboard', [DashboardController::class, 'index']);
    Route::get('/profile', [ProfileController::class, 'show']);
    Route::get('/settings', [SettingsController::class, 'index']);
});
Wenn Sie die Middleware auth vergessen, können nicht angemeldete Benutzer zugreifen. Wenden Sie sie unbedingt auf jede schützenswerte Route an.

Routen nur für Gäste

Um bereits angemeldete Benutzer weiterzuleiten, verwenden Sie die Middleware guest. Wenden Sie sie zum Beispiel auf Login- oder Register-Seiten an, damit bereits eingeloggte Benutzer ans Dashboard geleitet werden.
Route::middleware('guest')->group(function () {
    Route::get('/login', [AuthController::class, 'showLogin']);
    Route::get('/register', [AuthController::class, 'showRegister']);
});

Manuelle Authentifizierung

Wenn Sie ohne Starter Kit selbst einen Login umsetzen, nutzen Sie Auth::attempt().
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Auth;

class LoginController extends Controller
{
    public function login(Request $request): RedirectResponse
    {
        $credentials = $request->validate([
            'email' => ['required', 'email'],
            'password' => ['required'],
        ]);

        if (Auth::attempt($credentials)) {
            // Authentifizierung erfolgreich – Session neu generieren, um CSRF vorzubeugen
            $request->session()->regenerate();

            return redirect()->intended('/dashboard');
        }

        // Authentifizierung fehlgeschlagen
        return back()->withErrors([
            'email' => 'E-Mail oder Passwort sind nicht korrekt.',
        ])->onlyInput('email');
    }
}
Übergeben Sie Auth::attempt() als erstes Argument ein Array mit Anmeldedaten. Das Passwort wird automatisch gegen den Hash verglichen – übergeben Sie es also im Klartext. Um „Angemeldet bleiben” zu unterstützen, übergeben Sie im zweiten Argument true.
// Wert der Checkbox „Angemeldet bleiben" verwenden
Auth::attempt($credentials, $request->boolean('remember'));
Auch bei manueller Umsetzung sollten Sie den Code aus dem Starter Kit als Referenz für eine sichere Implementierung nutzen.

Logout

Zum Ausloggen rufen Sie Auth::logout() auf. Zusätzlich sollten Sie die Session invalidieren und das CSRF-Token neu generieren.
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Auth;

class LogoutController extends Controller
{
    public function logout(Request $request): RedirectResponse
    {
        Auth::logout();

        // Session invalidieren
        $request->session()->invalidate();

        // CSRF-Token neu generieren
        $request->session()->regenerateToken();

        return redirect('/');
    }
}
Verwenden Sie für die Route die POST-Methode.
Route::post('/logout', [LogoutController::class, 'logout'])->middleware('auth');
In Blade-Templates senden Sie den POST-Request per Formular.
<form method="POST" action="/logout">
    @csrf
    <button type="submit">Logout</button>
</form>

Zusammenfassung

AufgabeWeg
Auth-Funktionen schnell hinzufügenStarter Kit (laravel new)
Aktuellen Benutzer abrufenAuth::user() / $request->user()
Login-Status prüfenAuth::check()
Routen schützen->middleware('auth')
Manuell einloggenAuth::attempt($credentials)
AusloggenAuth::logout()

Nächste Schritte

Middleware

Lernen Sie die Funktionsweise der auth-Middleware und wie Sie eigene Middleware schreiben.
Zuletzt geändert am 13. Juli 2026