我正在使用Laravel ACL
,已经创建了Role
中间件。我已经将中间件绑定到了Controller中。像这样-
$this->middleware('HasRole:User|Admin|Author')->except(['userEdit','roleEdit']);
但是它不能正常工作。每个角色都可以访问所有方法。如果我添加routes/web.php
,那么它可以正常工作。
Route::prefix('admin')->middleware(['HasRole:Admin|Author'])->group(function(){
Route::get('/manage-user','AppController@userList')->name('user.list');
Route::get('/manage-role','AppController@roleList')->name('role.list');
});
通过这种方式Role
中间件可以正常工作。 但是我想从mycontroller做到这一点。
我的控制器。
function __construct()
{
$this->middleware('HasRole:User|Admin|Author')->except(['userEdit','roleEdit','permissionEdit','userUpdate']);
}
我的中间件。
public function handle($request, Closure $next, $role)
{
// return is_array($roles)? $roles: explode('|', $roles);
$roles=is_array($role)? $roles: explode('|', $role);
//dd($r);
if($request->user()===null)
{
return response('Insufficient Access',401);
}
if($request->user()->hasAnyRole($roles) || !$roles)
{
return $next($request);
}
return response('Insufficient Permission',401);
//return $next($request);
}