Maison > Questions et réponses > le corps du texte
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粉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.com
和 publisher.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 !