Last updated on October 18, 2026

Laravel for Beginners: Authentication and Authorization

Arlind Musliu cofounder at Lucky Media
Arlind Musliu

January 9, 2024 · 7 min read

Laravel for Beginners: Authentication and Authorization - Breeze Jetstream Fortify

This lesson is part of our free Laravel tutorial for beginners. The code examples use Laravel 13.

Easy Authentication in Laravel

Laravel, known for its elegant syntax and robust features, makes authentication simple. In Laravel 13, the official starter kits give you login, registration, password reset, email verification, and two-factor authentication out of the box. Under the hood, they use Laravel Fortify. In this lesson, we look at the starter kits, at Fortify, and at Breeze and Jetstream, which you will still find in many older tutorials. We have also included our own starter kit that we use for most of our projects, called Reactor for Laravel.

Laravel for Beginners: Blade and Breeze

Laravel 13 Starter Kits

The fastest way to add authentication is to pick a starter kit when you create your app. The Laravel installer asks which starter kit you want:

laravel new blog
cd blog
npm install && npm run build
composer run dev

Laravel 13 has four official starter kits:

  • React: React 19, TypeScript, Tailwind, and the shadcn/ui components, connected to Laravel with Inertia.

  • Vue: the Vue Composition API, TypeScript, Tailwind, and the shadcn-vue components, connected with Inertia.

  • Svelte: Svelte 5, TypeScript, Tailwind, and the shadcn-svelte components, connected with Inertia.

  • Livewire: Livewire, Tailwind, and the Flux UI components. You write PHP and Blade instead of JavaScript.

Each kit puts all of its routes, controllers, and views into your app, so you can change any of them. Every kit includes login, registration, password reset, email verification, and two-factor authentication. You can also generate a kit with team support.

Each kit also has a WorkOS AuthKit version. It adds social login (Google, Microsoft, GitHub, and Apple), passkeys, email "Magic Auth", and SSO. You need a WorkOS account to use it.

We suggest the Livewire starter kit for this beginner series. It uses Blade templates, like the rest of our lessons, so it is easier to follow.

Laravel Breeze and Jetstream (Laravel 11 and Earlier)

Many older tutorials use Laravel Breeze or Laravel Jetstream. Both packages say on GitHub that they are for Laravel 11.x and earlier. For a new Laravel 13 app, use the starter kits above.

Breeze was the minimal option. It added login, registration, password reset, and email verification with a Blade, Livewire, React, or Vue stack. If you maintain an older app that uses it, the install commands look like this:

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

Jetstream was the larger option. It added two-factor authentication, session management, API tokens with Laravel Sanctum, and optional team management, with Livewire or Inertia. The new starter kits now include two-factor authentication and optional teams as well.

Laravel Fortify

For developers who need more control over the frontend of their application, Laravel Fortify offers a backend implementation of login, registration, email verification, two-factor authentication, passkeys, and password reset features.

Fortify is a headless authentication backend: it has no views, so it works with your custom or existing frontend. All Laravel 13 starter kits use Fortify already, so you do not need to install it when you use a starter kit.

To use Fortify on its own, install it with Composer, then publish its files:

composer require laravel/fortify
php artisan fortify:install

After that, you choose the features you want in the config/fortify.php file.

Passkey Authentication with Fortify

Passkeys are a modern, passwordless standard (WebAuthn). They let users log in with Face ID, Touch ID, Windows Hello, or a hardware security key instead of a password. Fortify supports passkeys. To turn them on, add the feature to config/fortify.php:

use Laravel\Fortify\Features;

'features' => [
    Features::registration(),
    Features::resetPasswords(),
    Features::emailVerification(),
    Features::twoFactorAuthentication(),
    Features::passkeys([
        'confirmPassword' => true,
    ]),
],

Then your User model must implement the PasskeyUser contract and use the PasskeyAuthenticatable trait:

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Fortify\Contracts\PasskeyUser;
use Laravel\Fortify\PasskeyAuthenticatable;

class User extends Authenticatable implements PasskeyUser
{
    use Notifiable, PasskeyAuthenticatable;
}

Fortify also has a JavaScript client for the browser part of the passkey flow. The Fortify passkeys documentation shows the full set-up. Passkeys are phishing-resistant, cannot be reused across sites, and remove the need for users to remember passwords.

Simplify Your Development Experience with Reactor for Laravel

Reactor for Laravel

The Laravel starter kits are a great starting point. However, Reactor takes your development environment to the next level. It’s our starter kit that you can easily install and use once you reach a more advanced level of programming.

composer require lucky-media/reactor
php artisan reactor:install
npm run dev

Reactor simplifies your workflow with pre-configured ESLint and Prettier settings for consistent code formatting, enforces code standards with Husky hooks, and incorporates a Laravel Pint-based GitHub Workflow. Moreover, it boasts a suite of pre-designed frontend components, drawing inspiration from shadcn/ui, that prioritize both composability and ease of customization.

Starter Kits vs Fortify vs Breeze and Jetstream

Choosing the right authentication tool often comes down to how much control you need over the frontend. Here is a quick comparison to help you decide:

  • Laravel 13 starter kits: Complexity: Low. Features: login, registration, password reset, email verification, two-factor authentication, optional teams, and an optional WorkOS version. Stacks: React, Vue, Svelte, Livewire. Best for: every new Laravel 13 app, including beginner projects.

  • Laravel Fortify: Complexity: Medium. Features: a headless backend for login, registration, two-factor authentication, passkeys, password reset, and email verification. No frontend included. Best for: apps with a custom frontend that need a well-tested auth backend.

  • Laravel Breeze and Jetstream: Legacy packages for Laravel 11 and earlier. Best for: maintaining older apps that already use them.

Frequently Asked Questions

Does Laravel 13 still use Breeze and Jetstream?

No. Breeze and Jetstream are for Laravel 11.x and earlier. Laravel 13 uses the React, Vue, Svelte, and Livewire starter kits, which you pick when you run laravel new. The new kits also include two-factor authentication and optional teams, which used to need Jetstream.

When should I use Laravel Fortify instead of a starter kit?

Use Fortify when you are building an app with a custom frontend (a React SPA, a mobile app, or a headless architecture) and you need a well-tested, configurable authentication backend without any frontend opinions. Fortify handles all the logic, and you build the UI yourself. If you want pre-built views, use a starter kit, which already includes Fortify.

Does Laravel 13 support passkeys?

Yes. Laravel Fortify has a passkeys feature that you turn on in config/fortify.php. The WorkOS AuthKit versions of the starter kits also offer passkey login. Passkeys let users log in with Face ID, a fingerprint, or a hardware security key instead of a password.

Can I add authentication to an existing Laravel app?

Yes. You choose a starter kit when you create a new app, so for an existing Laravel 13 app, install Fortify with composer require laravel/fortify and php artisan fortify:install, then build your login views. Review the published files before running migrations to make sure nothing conflicts with your existing user table structure.

What is the simplest way to add login to a Laravel app?

Run laravel new blog and choose the Livewire starter kit. Then run npm install && npm run build and composer run dev. The installer creates the SQLite database and runs the migrations, so you have a working login, registration, and password reset system in a few minutes.

laravel best framework php

Conclusion

Laravel provides a rich set of tools for implementing authentication, each tailored to different needs and preferences. For a new Laravel 13 app, start with a starter kit. Use Fortify when you build your own frontend, and keep Breeze or Jetstream only for older apps that already use them.

For beginners, the Livewire starter kit is a good start, because it uses Blade like the rest of this series. As you grow more comfortable with Laravel, you can explore Fortify and the other starter kits to find the perfect fit for your blog's authentication requirements.

More Lessons in the Series

  1. Laravel for Beginners: Events and Listeners

  2. Laravel for Beginners: Collections for Data Handling

  3. Laravel for Beginners: PHPUnit and PEST Tests

This article is part of our series Laravel for Beginners: A Step-by-Step Guide to Learn the Concepts.


Bring Your Ideas to Life 🚀

If you need help with a Laravel project let’s get in touch.

Lucky Media is proud to be recognized as a leading Laravel Development Agency

Technologies

Laravel
Arlind Musliu cofounder at Lucky Media
Arlind Musliu

Cofounder and CFO of Lucky Media

Stay up-to-date

Be updated with all news, products and tips we share!

Let’s chat

We partner with a limited number of brands each quarter to ensure senior-level attention on every project.

Teamwork

Related posts

April 30, 2021

Laravel Breeze with Inertia and React
Laravel
Inertia
React