Laravel Sanctum & NuxtJS SPA tidak boleh mencipta kuki csrf dalam penyemak imbas
P粉512363233
P粉512363233 2023-12-13 13:49:38
0
1
600

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

membalas semua(1)
P粉311563823

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!

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan