LaravelのSanctumでログインページにアクセスできない
2023.06.20 14:42
2023.06.20 14:42

laravelのsanctumをつかってSPA認証のAPIサーバーをつくったんですが、
その時にデータが取得できずにハマってしまったことがあり、どう解決したかをメモしてみます。
SPA認証を使ってログイン後、取得したXSRF-Tokenで認証領域にアクセスできない現象に見舞われました。ログインまではできるんですが、ログイン後にログインが必要なページにアクセスできないということです。ログインがいらないページは問題なく取得できました。
動作環境はPHPは8.1、Laravelは9です。
結論としては2つの原因で動かなくなっていました。
原因1:ルーティングの登録漏れ
まずひとつは、route.phpの登録漏れです。
packageでディレクトリを分けた構成にしていたため、独自にroutesをつくってそれを読ませるようにしてたのですが、それをRouteServiceProvider.phpに登録しなくてはならなかったようです。
以下のapi.phpが独自に追加したルーティングファイルです。
packages/Tool/Admin/routes/api.php
これを「app/Providers/RouteServiceProvider.php」に登録をします。
Route::middleware('api')
->prefix('api/admin')
->group(base_path('packages/Tool/Admin/routes/api.php'));
});
ここはこれで完了です。
原因2:ルーティングの書き方
次にルーティングの書き方。
「api/admin」を独自で加えていたのがまずかったようですので直します。
Route::group(['namespace' => $namespace,'middleware' => ['auth:sanctum']], function () {
Route::resource('api/admin/hoge', 'HogeController');
});
↓直します
Route::middleware('auth:sanctum')->namespace($namespace)->group(function(){
Route::resource('/hoge', 'HogeController', ['as' => 'admin']);
}
これで正常に動くようになりました!
今回は以上です!