Lalevel中的多个参数无法正常运行

时间:2017-08-02 07:22:12

标签: laravel laravel-5 routes laravel-middleware

我有问题,在Route::middleware中使用多个参数对我不起作用。我正在尝试分配只有超级用户 admin 角色可访问的特定路由。

当我使用时:

role:superuser 

它工作正常,但是当我添加第二个参数时:

role:superuser,admin

当我为自己分配 admin 角色但仍然适用于超级用户角色时失败。

我很困惑所以任何帮助都会受到赞赏!

这是我的RoleMiddleware:

namespace App\Http\Middleware;

use Closure;

class RoleMiddleware 
{ 

/** 
* Handle an incoming request. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Closure $next 
* @param string $roles 
* @return mixed 
*/ 

public function handle($request, Closure $next, ...$roles) 
{ 
    $user = $request->user();

    if ($user && $user->isSuperuser($roles)) {
        return $next($request);
    }

    return redirect('/home')->withError('U heeft niet de juiste rechten!');

    }
}

以下是我的用户模型中的isSuperuser方法:

public function isSuperuser(...$roles)
{
    if ($roles) {
        return $this->roles == $roles;
    }

    return $this->roles;
}

最后但并非最不重要的是中间件的路由/网络代码:

Route::get('/users', 'UsersController@index')->middleware(['role:superuser,admin']);

顺便说一下:该方法名为'isSuperuser',但这只是一个名称。它还必须在某个时候接受 admin 角色。

1 个答案:

答案 0 :(得分:0)

使用|代替,,如下所示:

Route::get('/users', 'UsersController@index')->middleware(['role:superuser|admin']);