Lessons → Laravel → Lesson 9

Authentication

Laravel
⏱ 25 min read📖 IntermediateNot completed

Laravel provides several authentication systems. Laravel Breeze is the simplest — it gives you login, register, password reset out of the box.

Install Laravel Breeze

Terminal
composer require laravel/breeze --dev
php artisan breeze:install blade
php artisan migrate
npm install && npm run dev

Auth Helpers

PHP
<?php
// Check if logged in
if (auth()->check()) { ... }

// Get current user
$user = auth()->user();
echo $user->name;
echo $user->email;

// Get user ID
$userId = auth()->id();

// Login manually
auth()->login($user);
auth()->login($user, $remember = true);  // Remember me

// Logout
auth()->logout();

// Check in Blade
@auth
    <p>Welcome, {{ auth()->user()->name }}!</p>
@endauth

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

Manual Login

PHP
<?php
public function login(Request $request)
{
    $credentials = $request->validate([
        'email'    => 'required|email',
        'password' => 'required',
    ]);

    if (auth()->attempt($credentials, $request->boolean('remember'))) {
        $request->session()->regenerate();
        return redirect()->intended('/dashboard');
    }

    return back()->withErrors([
        'email' => 'These credentials do not match our records.',
    ]);
}

public function logout(Request $request)
{
    auth()->logout();
    $request->session()->invalidate();
    $request->session()->regenerateToken();
    return redirect('/');
}
?>

Protecting Routes

PHP
<?php
// Protect routes with auth middleware
Route::middleware('auth')->group(function () {
    Route::get('/dashboard', [DashboardController::class, 'index']);
    Route::get('/profile', [ProfileController::class, 'show']);
});

// In controller
public function __construct()
{
    $this->middleware('auth');
    $this->middleware('auth')->only(['create', 'store', 'edit', 'update', 'destroy']);
    $this->middleware('guest')->only(['login', 'register']);
}
?>
💡
Use Sanctum for API authentication! Install with composer require laravel/sanctum. It provides token-based auth for SPAs and mobile apps — much simpler than Passport for most use cases.
← Previous Lesson Next Lesson →
🧠

Test your knowledge!

Take a quiz to reinforce what you learned.

Take Quiz →