Laravel 中间件数组

Laravel middlware array

我正在使用 Laravel。

我想将一个数组传递到我 api 中的中间件,这样我就可以检查用户是否具有特定角色。这是我的想法:

 public function handle($request, Closure $next,$role)
    {
        $employee = Employee::find($request->parameters[0]['userid']);

        foreach($role as $r) {
            if (!$employee->hasRole($employee, $r)) {
                return response()->json([
                    'result' => [
                        'message' => 'Error creating Employee'
                    ]
                ], 500);
            }
        }
        return $next($request);
    }

但是我怎样才能将 an 传递给我的中间件。现在我正在这样做:

Route::group(['middleware' => 'role:Administrator,intern'], function () {

});

您只能将字符串作为中间件参数传递,但您可以使用 PHP 使用 explode 将字符串转换为数组:

public function handle($request, Closure $next, $role)
{
    $employee = Employee::find($request->parameters[0]['userid']);

    foreach(explode(',', $role) as $r) {
        if (!$employee->hasRole($employee, $r)) {
            return response()->json([
                'result' => [
                    'message' => 'Error creating Employee'
                ]
            ], 500);
        }
    }
    return $next($request);
}