Rumah  >  Soal Jawab  >  teks badan

Laravel Sanctum & NuxtJS SPA tidak boleh mencipta kuki csrf dalam penyemak imbas

Saya mempunyai API bahagian belakang dengan Sanctum dalam Laravel dan SPA repositori berasingan dalam NuxtJS

Saya cuba mengesahkan SPA saya dengan Sanctum. Saya cuba mengikuti dokumentasi Sanctum untuk mendapatkan kuki CSRF dalam penyemak imbas.

Masalahnya ialah apabila saya menghubungi titik akhir token CSRF yang disediakan oleh Sanctum, saya mendapat respons yang betul, tetapi kuki tidak ditetapkan. Itu sahaja, tiada kesilapan. Tidak kira sama ada saya mahu menggunakan nuxt auth atau hanya panggilan axios lama yang biasa.

Ini yang saya ada:

Nama domain: API-publisher.local:8080; front-end-publisher.local:3000

Konfigurasi Pengesahan 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' }
        }
      },
    },
  },

Konfigurasi AXIOS

axios: {
    baseURL: 'http://publisher.local:8080/api/v1', // Used as fallback if no runtime config is provided
    credentials: true,
    proxy: true,
  },

suci.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'),

Saya mencuba kombinasi dan variasi yang berbeza bagi tetapan ini tetapi tiada apa yang berhasil. Adakah anda tahu apa yang boleh berlaku?

P粉512363233P粉512363233285 hari yang lalu497

membalas semua(1)saya akan balas

  • P粉311563823

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

    Saya rasa saya sudah faham perkara ini. Saya membuat ia berfungsi.

    Oleh itu .local tidak boleh menjadi domain peringkat atas, saya rasa itu mungkin sebahagian daripada masalah, tetapi saya tidak pasti.

    Menukar nama domain kepada yang lama localhost boleh menyelesaikan masalah, tetapi ada masalah dengan penyelesaian ini. Atas sebab tertentu saya tidak tahu, saya secara automatik mendapat kuki XSRF pada sebarang panggilan ke API, tidak kira titik akhir yang saya panggil. keanehan.

    Cara paling berkesan ialah menukar nama domain kepada api.publisher.compublisher.com dan kemudian menukar semua tetapan dalam dokumen Sanctum.

    Berhati-hati dengan nama domain, pastikan ia sepadan dan disediakan dengan betul. Sangat mudah untuk mengkonfigurasi semula perkara itu, tetapi sukar untuk mendiagnosisnya!

    Semoga ini membantu!

    balas
    0
  • Batalbalas