doushai7225 2018-07-03 10:06
浏览 74
已采纳

爆炸功能在laravel中间件中不起作用

I'm developing a Laravel ACL System. I have a User table, a role table and a permissions table. When I check the user given permissions using middleware and inside middleware I'm use explode() function. this function only show the first permissions other permissions doesn't contains.

Here, is my Controller;

function __construct()
{
    $this->middleware('auth');
    $this->middleware('HasPermission:Role-Read,Role-Update,Role-Delete');
}

My Middleware.

 public function handle($request, Closure $next,$permissions='')
{
    $permissions_array = explode(',', $permissions);
    dd($permissions_array);
    foreach($permissions_array as $permission){
        if(Auth::user()->hasPermission($permission)){
            return $next($request);
        }
    }

    return redirect()->back();;
}

result when i use dd() function.

array:1 [▼ 0 => "Role-Read" ]

  • 写回答

1条回答 默认 最新

  • dongshao8125 2018-07-03 10:17
    关注

    Controller

    $this->middleware('HasPermission:Role-Read,Role-Update,Role-Delete');
    

    Middleware Using ... to access variable arguments

    public function handle($request, Closure $next, ...$permissions)
        {
            foreach($permissions_array as $permission){
                if(Auth::user()->hasPermission($permission)){
                    return $next($request);
                }
            }
    
            return redirect()->back();;
        }
    

    or you can use

    $this->middleware('HasPermission:Role-Read|Role-Update|Role-Delete');
    

    Middleware

    $permissions_array = explode('|', $permissions);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料