Php 如何在laravel中将数组参数传递给中间件

Php 如何在laravel中将数组参数传递给中间件,php,laravel,laravel-middleware,Php,Laravel,Laravel Middleware,我不知道PHP7的语法,实际上我是新手 我正试图将像['admin'、'user'、'cmc']这样的角色传递给路由中间件,如下所示,我如何正确地执行它 这是我的路线 Route::get('/dashboard','HomeController@dashboard')->name('dashboard')->middleware("roles:['admin','user']"); //如何传递其中的角色数组 //角色中间件 <?php namespace App\H

我不知道PHP7的语法,实际上我是新手 我正试图将像['admin'、'user'、'cmc']这样的角色传递给路由中间件,如下所示,我如何正确地执行它

这是我的路线

  Route::get('/dashboard','HomeController@dashboard')->name('dashboard')->middleware("roles:['admin','user']");
//如何传递其中的角色数组

//角色中间件

<?php

namespace App\Http\Middleware;

use Closure;
use App\Role;
use Illuminate\Support\Facades\Log;


class Roles
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next,$role)
    {
        Log::info($role);
        if($request->user()==null){
            return response('unauthorised Access detected',401);
        }
        //check for any role passed from array 
        if($request->user()->hasAnyRole($role)){
            return $next($request);
        }        
        return response('unauthorised Access detected',401);
    }
}

我遇到过类似的情况,我想在访问路线之前检查用户是所有者还是管理员;因此,我不需要重复路由,需要传递数组而不是设置单个参数

我发送了一个参数,但使用了|作为分隔符,在middlewhere类上爆炸

在路线中,我为路线组准备了这个
Route::group(['middleware'=>['checkRole:admin | owner']],function(){

然后在我使用爆炸的中间

$roles = explode('|', $permitted_roles);
Simple在角色数组中循环,检查用户是否有一个角色:)希望这有帮助。简单易用,满足我的需要

$roles = explode('|', $permitted_roles);