laravel sanctumでテストしていますが、ここにいくつかの問題があります。管理者ガードを作成しています。
ミドルウェアをauth:sanctum_adminに変更すると、管理者のみがアクセスできるようになりますが、ここでは、Webガードを使用して通常のユーザーアカウントでアクセスできます。なぜなのかわからないのですが... multiauthパッケージでパスポートを使用しました。ただし、ここの聖域では、ユーザーテーブルと管理者を別々にすることはできません。
@Abhishek Mitra
Laravel Sanctumを使用してMultiple Auth Guard
の場合の認証を行うには、ミドルウェアをそのまま使用できます。
Route::middleware(['auth:guard_name'])->get('/user', function(){
return auth()->guard('guard_name')->user();
}
聖域で複数のガードを使用することもできます。これを達成するには、次の手順に従います-
config/auth.php
)'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
]
],
config/auth.php
)'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
],
],
if(auth()->guard('admin')->attempt($request->only('email','password')))
{
return auth()->guard('admin')->user();
}
デフォルトのガードは次のようにする必要があります:
'defaults'{
'guard' : "sanctum_admin",
'passwords': 'admins',
}
または
'defaults'{
'guard' : 'web',
'passwords' : 'users',
}