Heim  >  Fragen und Antworten  >  Hauptteil

Laravel Sanctum & NuxtJS SPA können kein CSRF-Cookie im Browser erstellen

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粉512363233P粉512363233334 Tage vor547

Antworte allen(1)Ich werde antworten

  • P粉311563823

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

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

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

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

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

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

    希望有帮助!

    Antwort
    0
  • StornierenAntwort