我正在尝试从特定路由中删除管理中间件,并仅为管理路由创建Route :: group,但是我不确定自己是否做得正确。
我正在试图解决这个问题
Route::get('/admin', [
'uses' => 'PagesController@admin',
'as' => 'admin',
'middleware' => 'roles',
'roles' => 'Admin'
]);
对此:
Route::group(['middleware' => ['roles'], 'roles' => ['admin']], function(){
Route::get('/admin', 'pagesController@admin')->name('admin');
});
因此,此路线组仅将具有管理员角色的人员传递给路线。我相信它可以正常工作,但我真的想检查我是否正确进行了更改。
中间件:
class CheckRole
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($request->user() === null){
return redirect()->route('home');
}
$actions = $request->route()->getAction();
$roles = isset($actions['roles']) ? $actions['roles'] : null;
if ($request->user()->hasAnyRole($roles) || !$roles ) {
return $next($request);
}
return redirect()->route('home');
}
}