Everything you need as a full stack web developer

Laravel API Authentication with Sanctum tokens

- Posted in Laravel by

TL;DR Laravel Sanctum is a cutting-edge package for token-based authentication. It provides a lightweight solution for rapid development and deployment, developed by Taylor Otwell, Laravel's creator. To get started, install the package via Composer, publish the migration, and configure the settings in sanctum.php. Authenticating with tokens involves obtaining a JWT on login, storing it securely, and sending it in the Authorization header for subsequent requests.

Unlocking Secure APIs with Laravel Sanctum: A Comprehensive Guide

As a full-stack developer, you're no stranger to the challenges of building scalable and secure APIs. With the rise of modern web applications, authentication has become an essential aspect of any API's architecture. In this article, we'll delve into the world of Laravel Sanctum, a cutting-edge package that simplifies API authentication with tokens.

The Sanctum Advantage

Before we dive into the nitty-gritty, let's discuss why Sanctum stands out from other authentication packages. Developed by Taylor Otwell, the creator of Laravel, Sanctum provides a sleek and efficient solution for token-based authentication. Its lightweight design makes it an ideal choice for modern applications that require rapid development and deployment.

Getting Started with Sanctum

To get started with Sanctum, you'll need to install the package via Composer:

composer require laravel/sanctum

Once installed, publish the Sanctum migration using Artisan:

php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"

Run the migration to create the necessary tables in your database:

php artisan migrate

Configuring Sanctum

With the installation out of the way, let's configure Sanctum to suit your application's needs. You can do this by modifying the sanctum.php configuration file in the config directory.

For example, you might want to specify a custom token expiration period or adjust the secret key:

// config/sanctum.php

'expire_in' => '1 day', // Token expiration time
'secret' => env('SANCTUM_SECRET'), // Secret key for signing tokens

Authenticating with Tokens

Now that Sanctum is set up, let's explore how to authenticate users using tokens. The process involves three main steps:

  1. Obtaining a token: When a user logs in, they'll receive a JSON Web Token (JWT) containing their user data and authentication information.
  2. Storing the token: The client will store the token securely, often using local storage or cookies.
  3. Authenticating with the token: On subsequent requests, the client will send the token in the Authorization header to authenticate the request.

Let's create a simple login route that returns a Sanctum token:

// routes/api.php

Route::post('/login', function (Request $request) {
    // Authenticate user and return JWT
    $token = auth()->shouldUse('sanctum')->attempt($request->only('email', 'password'));

    if ($token) {
        return response()->json(['token' => $token]);
    } else {
        return response()->json(['error' => 'Invalid credentials'], 401);
    }
});

Protecting Routes with Sanctum

With tokens in hand, let's protect our routes to ensure only authenticated users can access them. We'll use the auth:sanctum middleware to achieve this:

// routes/api.php

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return response()->json($request->user());
});

Conclusion

Laravel Sanctum has revolutionized API authentication by providing a simple, efficient solution for token-based security. With this guide, you've learned how to install and configure Sanctum, authenticate users with tokens, and protect routes to ensure only authorized access.

By implementing Sanctum in your next Laravel project, you'll be able to focus on building scalable and secure APIs that meet the demands of modern web applications.

Fullstack.ist offers meaningful insight into a broad range of topics. Fullstack.ist offers meaningful insight into a broad range of topics.
Backend Developer 102 Being a Fullstack Developer 107 CSS 109 Devops and Cloud 70 Flask 108 Frontend Developer 357 Fullstack Testing 99 HTML 171 Intermediate Developer 105 JavaScript 206 Junior Developer 124 Laravel 221 React 110 Senior Lead Developer 124 VCS Version Control Systems 99 Vue.js 108