Laravel Sanctum & NuxtJS SPA ne peuvent pas créer de cookie csrf dans le navigateur
P粉512363233
P粉512363233 2023-12-13 13:49:38
0
1
604

J'ai une API backend avec Sanctum dans Laravel et un référentiel SPA séparé dans NuxtJS

J'essaie de vérifier mon SPA avec Sanctum. J'essaie de suivre la documentation Sanctum pour obtenir le cookie CSRF dans le navigateur.

Le problème est que lorsque j'appelle le point de terminaison du jeton CSRF fourni par Sanctum, j'obtiens la bonne réponse, mais le cookie n'est pas défini. Voilà, aucune erreur. Peu importe si je souhaite utiliser l'authentification nuxt ou simplement les anciens appels axios.

Voici ce que j'ai :

Nom de domaine : API-publisher.local:8080 ; front-end-publisher.local:3000

Configuration de l'authentification NUXT

auth: {
    strategies: {
      laravelSanctum: {
        provider: 'laravel/sanctum',
        url: 'http://publisher.local:8080',
        endpoints: {
          login: { url: '/api/v1/login', method: 'post' },
          // logout: { url: '/auth/logout', method: 'post' },
          // user: { url: '/auth/user', method: 'get' }
        }
      },
    },
  },

Configuration AXIOS

axios: {
    baseURL: 'http://publisher.local:8080/api/v1', // Used as fallback if no runtime config is provided
    credentials: true,
    proxy: true,
  },

sacred.php

'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(
        '%s%s',
        'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1,local:3000',
        Sanctum::currentApplicationUrlWithPort()
    ))),

session.php

'domain' => env('SESSION_DOMAIN', '.local'),

J'ai essayé différentes combinaisons et variations de ces paramètres mais rien n'a fonctionné. Savez-vous ce qui ne va pas ?

P粉512363233
P粉512363233

répondre à tous(1)
P粉311563823

Je pense avoir compris cela. Je l'ai fait fonctionner.

Par conséquent, .local ne peut pas être un domaine de premier niveau, je pense que cela pourrait faire partie du problème, mais je n'en suis pas sûr.

Changer le nom de domaine par l'ancien localhost peut résoudre le problème, mais il y a un problème avec cette solution. Pour une raison que je ne connais pas, je reçois automatiquement le cookie XSRF lors de tout appel à l'API, quel que soit le point de terminaison que j'appelle. étrangeté.

Le moyen le plus efficace est de changer le nom de domaine en api.publisher.compublisher.com puis de modifier tous les paramètres dans le document Sanctum.

Soyez très prudent avec les noms de domaine, assurez-vous qu'ils correspondent et sont correctement configurés. Il est très facile de reconfigurer cette chose, mais difficile de la diagnostiquer !

J'espère que cela vous aidera !

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal