Jor*_*rre 2 php authentication middleware laravel
我在一个名为rolMiddleware的中间件中得到了这个句柄:
public function handle($request, Closure $next, $roles)
{
//dd($request->user());
foreach ($roles as $rol) {
if ($request->user()->getTipoUsuario($request->user()->tipo_usuario_id)->getNombreTipoUsuario() == $rol) {
return $next($request);
}
}
abort(403, "¡No hay autorizacion!");
}
Run Code Online (Sandbox Code Playgroud)
但$ roles是一个数组,这是我使用中间件的路线:
Route::get('/mid', ['middleware' => 'roles:super admin', function () {
return "done";
}]);
Run Code Online (Sandbox Code Playgroud)
而给我的错误是:
ErrorException in RolMiddleware.php line 22:
Invalid argument supplied for foreach()
Run Code Online (Sandbox Code Playgroud)
你可能不需要数组,因为我只在超级管理员中使用它,因为我只需要超级管理员,但是会有超级管理员和区域管理员的路由.
has*_*san 10
在laravel中,您可以使用逗号分隔要传递给中间件的参数,,如下所示:
Route::get('/mid', ['middleware' => 'roles:super,admin', function () {
// ^ note this
return "done";
}]);
Run Code Online (Sandbox Code Playgroud)
请注意,这不会将参数作为数组发送,因此$roles除非使用传递的参数作为省略号参数,否则不能循环,如下所示:
public function handle($request, Closure $next, ...$roles)
Run Code Online (Sandbox Code Playgroud)
相反,您需要为每个角色使用单个参数:
public function handle($request, Closure $next, $role1, $role2) // .... and so on
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4328 次 |
| 最近记录: |