Laravel Sanctum & NuxtJS SPA können kein CSRF-Cookie im Browser erstellen
P粉512363233
P粉512363233 2023-12-13 13:49:38
0
1
583

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粉512363233
P粉512363233

Antworte allen(1)
P粉311563823

我想我已经明白了这一点。我让它工作了。

因此 .local 不能是顶级域,我认为这可能是问题的一部分,但我不确定。

将域名更改为旧的 localhost 可以解决问题,但此解决方案有一个问题。由于某些我不知道的原因,无论我调用哪个端点,我都会在对 API 的任何调用中自动获取 XSRF cookie。奇怪。

最有效的方法是将域名更改为 api.publisher.compublisher.com,然后更改 Sanctum 文档中的所有设置。

对域名要格外小心,确保它们匹配并且设置正确。重新配置那个东西非常容易,但很难诊断它!

希望有帮助!

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage