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 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)
  • ¥15 机器人轨迹规划相关问题
  • ¥15 word样式右侧翻页键消失