0

我正在使用 Laravel Sanctum 和 Vuejs。我想分别以管理员和用户身份登录,当然他们的请求不应该相互联系。

我有用户(模型和控制器)和管理员(模型和控制器)

这就是我登录的方式(两个控制器分别像这样)

public function login(Request $request) {

$fields = $request->validate([
  'username' => 'required|string',
  'password' => 'required|string',
]);

$admin = Admin::where('username', $fields['username'])->first();

if (!$admin || !Hash::check($fields['password'], $admin['password'])) {
  return response([
    'error' => 'some error'
  ]);
}

$token = $admin->createToken($request['username'])->plainTextToken;

$response = [
  'admin' => $admin,
  'admin_token' => $token
];

return response($response, 201);
}

我可以这样使用

// routes/api.php
Route::group(['middleware' => ['auth:sanctum']], function() {
 //
});

但我真正想这样使用

// routes/api.php
Route::group(['middleware' => ['admin:sanctum']], function() {
 //
});

我试过了

  // config/sanctum.php 
  'guard' => ['web', 'admin'],

我还定义了自定义警卫

// config/auth.php
    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
        'admin' => [
           'driver' => 'session', // provider admin also defined and $table = 'admin' not admins
           'provider' => 'admin',
       ],
    ],

顺便说一句,当我尝试像这样更改驱动程序时 => sanctum php artisan server:8000 退出了。

4

0 回答 0