Maison  >  Questions et réponses  >  le corps du texte

Laravel Sanctum & NuxtJS SPA ne peuvent pas créer de cookie csrf dans le navigateur

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粉512363233P粉512363233334 Il y a quelques jours549

répondre à tous(1)je répondrai

  • P粉311563823

    P粉3115638232023-12-14 00:56:05

    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 !

    répondre
    0
  • Annulerrépondre