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?
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.com
和publisher.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!