📅  最后修改于: 2023-12-03 14:39:23.915000             🧑  作者: Mango
在 Laravel 8 中,若尝试使用 auth
中间件保护某个路由时,可能会遭遇到类似以下的错误提示:
InvalidArgumentException
Auth guard [admin] is not defined.
这是由于在 config/auth.php
配置文件中未定义名为 admin
的身份验证卫士(guard)。如下所示:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
],
解决此问题,需要在 config/auth.php
配置文件中的 guards
中添加名为 admin
的 guard,和一个对应的 provider(提供者),并确保 provider 中指定的模型存在。
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
],
// ...
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Models\Admin::class,
],
],
// app/Http/Controllers/AdminController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Auth;
class AdminController extends Controller
{
public function index()
{
if (Auth::guard('admin')->check()) {
// do something
}
// ...
}
}
// routes/web.php
use App\Http\Controllers\AdminController;
Route::get('/admin', [AdminController::class, 'index'])
->middleware('auth:admin');
以上就是解决 Laravel 8 auth guard (admin) 未定义
错误的方法。在使用 auth
中间件时,确保在 config/auth.php
中定义了相关 guard 和 provider。