Heim > Fragen und Antworten > Hauptteil
Ich habe eine Backend-API mit Sanctum in Laravel und ein separates Repository-SPA in NuxtJS
Ich versuche, mein SPA bei Sanctum zu verifizieren. Ich versuche, der Sanctum-Dokumentation zu folgen, um das CSRF-Cookie im Browser zu erhalten.
Das Problem ist, dass ich beim Aufruf des von Sanctum bereitgestellten CSRF-Token-Endpunkts die richtige Antwort erhalte, das Cookie jedoch nicht gesetzt ist. Das war's, keine Fehler. Es spielt keine Rolle, ob ich Nuxt Auth oder einfach nur alte Axios-Aufrufe verwenden möchte.
Das habe ich:
Domainname: API-publisher.local:8080; front-end-publisher.local:3000
NUXT-Authentifizierungskonfiguration
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' } } }, }, },
AXIOS-Konfiguration
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'),
Ich habe verschiedene Kombinationen und Variationen dieser Einstellungen ausprobiert, aber nichts hat funktioniert. Wisst ihr, was falsch sein könnte?
P粉3115638232023-12-14 00:56:05
我想我已经明白了这一点。我让它工作了。
因此 .local
不能是顶级域,我认为这可能是问题的一部分,但我不确定。
将域名更改为旧的 localhost
可以解决问题,但此解决方案有一个问题。由于某些我不知道的原因,无论我调用哪个端点,我都会在对 API 的任何调用中自动获取 XSRF cookie。奇怪。
最有效的方法是将域名更改为 api.publisher.com
和 publisher.com
,然后更改 Sanctum 文档中的所有设置。
对域名要格外小心,确保它们匹配并且设置正确。重新配置那个东西非常容易,但很难诊断它!
希望有帮助!