Laravel多重身份验证保护路由多重中间件不工作
我已经创建了一个额外的中间件管理员,我想保护我的路由。添加单个中间件“auth”或“auth:admin”正在工作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
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']
您的自定义中间件是什么样子的?或者你是说一个守卫?看起来你在“中间件”属性上缺少了一个结尾“]”,这是一个输入错误,你的自定义中间件是什么样子的?或者你是说一个警卫?看起来你在“中间件”属性上遗漏了一个结尾“]”,这是一个输入错误谢谢!那正是我想要的。谢谢!这正是我想要的。