내 laravel 응용 프로그램에 역할 관리자, 중재자 및 구성원이 있습니다. 응용 프로그램은 정면 및 백엔드 섹션이 있습니다. 관리자 및 중재자 만 백엔드 섹션에 대한 액세스를 허용하려고합니다.) ( Laravel 하나 이상의 역할을위한 컨트롤러 미들웨어
......
protected $routeMiddleware = [
'superusers' => \CMS\Http\Middleware\SuperUsersMiddleware::class,
'administrator' => \CMS\Http\Middleware\AdminMiddleware::class,
'moderator' => \CMS\Http\Middleware\ModeratorMiddleware::class,
'auth' => \CMS\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class,
'guest' => \CMS\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
];
.....
내 백엔드 폴더에
내가 Controller.php이 (백엔드 섹션의 다른 모든 컨트롤러가이 컨트롤러를 확장) 만들고 __construct에 : Kernel.php에서<?php
namespace CMS\Http\Middleware;
use Closure;
class SuperUsersMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (! $request->user()->hasRole('administrator') || ! $request->user()->hasRole('moderator')) {
return redirect('/');
}
return $next($request);
}
}
등록 : 나는 SuperUsersMiddleware 만들 기능 세트 미들웨어 :
...
public function __construct()
{
$this->middleware('superusers');
}
...
그러나 이것은 나를 위해 작동하지 않습니다. 또한 관리자와 중재자 미들웨어를 만들었으며 따로 작동하지만 두 가지가 모두 필요했습니다. 그렇게하는 방법? I 용지함 :
public function __construct()
{
$this->middleware('administrator');
$this->middleware('moderator');
}
그러나 이것도 작동하지 않습니다. 이 상황에 가장 적합한 방법은 무엇입니까?