Laravel多重身份验证保护路由多重中间件不工作

Laravel多重身份验证保护路由多重中间件不工作,laravel,authentication,routes,middleware,Laravel,Authentication,Routes,Middleware,我已经创建了一个额外的中间件管理员,我想保护我的路由。添加单个中间件“auth”或“auth:admin”正在工作 Route::get('/calendar', function () { return view('app', ['data' => []); })->middleware('auth'); 但我想作为一个管理员,你也可以访问用户的路线,但这是不工作。如果我尝试以下操作,并且以管理员身份登录,我会一直被重定向到登录页面 Route::get('/inform

我已经创建了一个额外的中间件管理员,我想保护我的路由。添加单个中间件“auth”或“auth:admin”正在工作

Route::get('/calendar', function () {
    return view('app', ['data' => []);
})->middleware('auth');
但我想作为一个管理员,你也可以访问用户的路线,但这是不工作。如果我尝试以下操作,并且以管理员身份登录,我会一直被重定向到登录页面

Route::get('/information', ['middleware' => ['auth', 'auth:admin'], function () {
    return view('app', ['data' => ['auth' => Auth::check()]]);
}]);

但如果我将['auth','auth:admin']更改为['auth:admin','auth'],它将为admin工作,而不是为user工作。因此,似乎只有我的中间件在数组中的第一个元素被识别。有人知道为什么我的多个中间件是分开工作的,而不是一起工作吗?如果您试图允许检查多个“防护装置”的路由,您可以将多个防护装置作为参数传递给
验证
中间件
验证

auth:web,admin
(假设
web
是您的默认防护)

这将尝试从传入的每个防护中解析用户(
Authenticatable
)。如果任何警卫返回一个用户(
authenticable
),您将通过authenticated。如果不是,你就是客人


如果您设置中间件
auth
auth:admin
这是堆栈中两个不相关的独立“中间件”。

如果您试图允许检查多个“防护装置”的路由,您可以将多个防护装置作为参数传递给
验证
中间件,
auth

Route::get('/information', ['middleware' => ['auth', 'auth:admin'],function () {
    return view('app', ['data' => ['auth' => Auth::check()]]);
}]);
auth:web,admin
(假设
web
是您的默认防护)

这将尝试从传入的每个防护中解析用户(
Authenticatable
)。如果任何警卫返回一个用户(
authenticable
),您将通过authenticated。如果不是,你就是客人

如果您设置中间件
auth
auth:admin
则这是堆栈中两个独立的、不相关的“中间件”

Route::get('/information', ['middleware' => ['auth', 'auth:admin'],function () {
    return view('app', ['data' => ['auth' => Auth::check()]]);
}]);
在这个代码中<代码>['auth','auth:admin']
这意味着您需要登录默认保护和管理保护。如果您只需要登录管理员保护,
['auth:admin']


在这个代码中<代码>['auth','auth:admin']
这意味着您需要登录默认保护和管理保护。如果您只需要登录AdminGuard,
['auth:admin']

您的自定义中间件是什么样子的?或者你是说一个守卫?看起来你在“中间件”属性上缺少了一个结尾“]”,这是一个输入错误,你的自定义中间件是什么样子的?或者你是说一个警卫?看起来你在“中间件”属性上遗漏了一个结尾“]”,这是一个输入错误谢谢!那正是我想要的。谢谢!这正是我想要的。