1. 程式人生 > 其它 >Laravel Sanctum SPA cookie&session 驗證實踐

Laravel Sanctum SPA cookie&session 驗證實踐

參考文件

https://learnku.com/docs/laravel/8.x/sanctum/9421#spa-authentication

實踐中遇到的問題

spa客戶端死活不新增cookie分析

1.客戶端使用的請求如:axios,沒有啟用跨域cookie

axios.defaults.withCredentials = true;

2.服務端沒有將跨域配置好,需要確保

Access-Control-Allow-Credentials:true

3.伺服器 config\sanctum 配置中的 stateful 沒有配置。應該配置為客戶端的所在域名

'stateful' => ['localhost:3000']

4.客戶端使用的是IP的形式:如 127.0.0.1
經過我的測試以下寫法無效(客戶端:127.0.0.1:3000,服務端:127.0.0.1:8888)的情況

'stateful' => ['127.0.0.1:3000']

5.客戶端的域名是:localhost:3000,而服務端的域名是:127.0.0.1:8888 域名不同無法設定 cookie。也就是客戶端必須與服務端域名相同

總結

不要用Sanctum 的SPA cookie認證。麻煩的一批,域名不對就會炸,稍微配置偏差一點就炸。還是老老實實的用 API令牌認證模式