Home >Backend Development >PHP Tutorial >Nuxt 3 Laravel Sanctum Authentication: Secure Your SPA and API with Ease

Nuxt 3 Laravel Sanctum Authentication: Secure Your SPA and API with Ease

Robert Michael Kim
Robert Michael KimOriginal
2025-03-05 16:20:15150browse

Nuxt 3   Laravel Sanctum Authentication: Secure Your SPA and API with Ease

Robust authentication is paramount in modern web development to safeguard user data and application integrity. The nuxt-sanctum-authentication module provides a seamless integration between Nuxt 3 and Laravel Sanctum, simplifying the complexities of both single-page application (SPA) and API token-based authentication. This module efficiently handles tasks like CSRF protection, Bearer token management, and supports both server-side rendering (SSR) and client-side rendering (CSR). Whether you're building a secure login system or an API-driven project, this module offers a straightforward solution.

Before proceeding, explore these helpful resources:

  • Module Repository: nuxt-sanctum-authentication
  • Documentation: Nuxt Sanctum Authentication Documentation
  • Demo Repository: nuxt-sanctum-authentication-demo

Integrating Laravel Sanctum with Nuxt 3

Installing the nuxt-sanctum-authentication Module

The nuxt-sanctum-authentication module streamlines the integration between Nuxt 3 and Laravel Sanctum, managing the intricacies of SPA and API authentication, including CSRF token handling and Bearer tokens.

Install the package within your Nuxt 3 application:

npm install @qirolab/nuxt-sanctum-authentication

Configuring nuxt.config.ts

After installation, add the module to your nuxt.config.ts:

export default defineNuxtConfig({
  modules: ["@qirolab/nuxt-sanctum-authentication"],
  sanctum: {
    apiUrl: "http://api.yourapp.test",  // Replace with your Laravel API URL
  },
});

This configuration specifies the API URL for your Laravel application.

Implementing Login Functionality

Create a login page in your Nuxt 3 application where users enter their credentials. Utilize the useSanctum() composable to manage login requests. A basic example:

<template>
  <form>
    <input v-model="form.email" type="email" placeholder="Email">
    <input v-model="form.password" type="password" placeholder="Password">
    <button type="submit">Login</button>
  </form>
</template>

This form submits user credentials to the backend via Sanctum's login endpoint, ensuring secure communication using CSRF tokens.

SPA vs. API Token Authentication

The module defaults to cookie-based SPA authentication. For API token authentication, modify the authMode in nuxt.config.ts:

sanctum: {
  apiUrl: "http://api.yourapp.test",
  authMode: "token",  // Enables token-based authentication
}

Resolving CORS Issues

Cross-Origin Resource Sharing (CORS) errors are common when setting up cross-origin authentication. Adjust your Laravel config/cors.php:

'paths' => ['api/*', 'sanctum/csrf-cookie', '/login'],

Include the login endpoint in the paths array to enable CORS requests.

Testing and Security

After configuration, test your login page. Inspect the login request in your browser's developer tools (Network tab). A successful response without CORS errors indicates correct configuration. The combination of Nuxt 3 and Laravel Sanctum provides a robust and easily implemented authentication solution for both SPAs and APIs.

Benefits of nuxt-sanctum-authentication

This module simplifies authentication between Nuxt 3 and Laravel Sanctum by handling CSRF tokens, Bearer tokens, and seamlessly supporting SSR and CSR.

Conclusion

Securing your Nuxt 3 application with Laravel Sanctum is simplified with the nuxt-sanctum-authentication module. This guide provides a clear path to implementing secure and efficient authentication for your users.

The above is the detailed content of Nuxt 3 Laravel Sanctum Authentication: Secure Your SPA and API with Ease. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn