Laravel Sanctum SPA cookie&session 驗證實踐
阿新 • • 發佈:2021-08-04
參考文件
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令牌認證模式 吧