laravel中控制器功能的用户角色权限

laravel中控制器功能的用户角色权限,laravel,Laravel,我正在使用laravel5.4。我需要为每个方法创建角色权限 在这里,我创建了一个中间件(角色),如下所示: CheckRole.php public function handle($request, Closure $next) { $role = array_slice(func_get_args(), 2); if ( ! User::find(auth()->id())->hasAnyRole($role)) { return

我正在使用laravel5.4。我需要为每个方法创建角色权限

在这里,我创建了一个中间件(角色),如下所示:

CheckRole.php

public function handle($request, Closure $next)
{
    $role = array_slice(func_get_args(), 2);
    if ( ! User::find(auth()->id())->hasAnyRole($role))
    {    
        return response("Insufficient permission",401);
        session()->flash('message',"You have no permission to access");
        return redirect('/');
    }
    return $next($request);
}
我有一个控制器作为公司控制器:

CoompanyController.php

public function __construct()
{
    $this->middleware(function (Request $request, $next) 
    {
        $this->user = \Auth::User();
        //print_r($this->user);exit;
        if($this->user['userrole_id'] == 1)
        {
            $this->middleware('roles:superadmin');      
        }
        else if ($this->user['userrole_id'] == 3) 
        {
            $this->middleware('roles:supportperson',['only' => ['index']]);
        }
        return $next($request);
    });
}
在这里,如果登录用户是超级管理员,那么他可以访问控制器的所有功能。如果登录用户是supportperson,则他只能访问索引方法

那么,如何使用相同的中间件为不同的角色设置功能权限呢?

使用


委托是向Laravel 5添加基于角色的权限的一种简洁灵活的方式。

IMHO Laravel附带了一个完全可配置的授权系统。不需要定制中间件。请看这里:@dparoli我是拉雷维尔的新手,所以我不知道如何使用它。所以我需要一个用户中间件。第一条规则是不要重新发明轮子,laravel codebase是一个需要战斗的庞然大物,在任何定制之前都要阅读文档。@dparoli Ok。谢谢