Фреймворк Laravel добавлять пользовательские middleware для группы маршрут
в моем веб-приложении у меня есть панель администратора, и я пытаюсь сделать доступ к пользователям, у которых есть роль администратора, с помощью этого кода:
namespace App\Http\Middleware;
use Closure;
class CheckUserAdminRole
{
public function handle($request, Closure $next)
{
if (auth()->check()) {
if (auth()->check() && !auth()->user()->hasRole('admin')) {
auth()->logout();
return redirect(route('system.messages','userIsNotAdmin'));
}
}
return $next($request);
}
}
и в моих маршрутах у меня есть эта маршрутная группа:
Route::group(['namespace' => 'Dashboard', 'middleware' => ['auth:web'], 'prefix' => 'dashboard'], function () {
$this->group(['prefix' => 'administrator'], function () {
$this->get('panel', 'AdminController@index');
});
мое ядро:
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
...
\App\Http\Middleware\CheckUserAdminRole::class,
];
теперь, когда я добавляю свое промежуточное ПО в качестве CheckUserAdminRole
в группу маршрутов, как с этим кодом:
Route::group(['namespace' => 'Dashboard', 'middleware' => ['auth:web','CheckUserAdminRole'], 'prefix' => 'dashboard'], function () {
я получаю эту ошибку:
Class CheckUserAdminRole does not exist
эти коды не смогли решить мою проблему:
php artisan route:clear
php artisan cache:clear
php artisan config:clear
composer dump-autoload
Ответы - Фреймворк Laravel добавлять пользовательские middleware для группы маршрут / Laravel add custom middleware to route group

19.05.2018 07:48:34
Вместо регистрации промежуточного программного обеспечения в массиве $middleware
его следует зарегистрировать в $routeMiddleware
образом:
protected $routeMiddleware = [
...
'checkAdmin' => \App\Http\Middleware\CheckUserAdminRole::class,
];
Примечание: Регистрация промежуточного программного обеспечения в массиве $middleware
приводит к тому, что оно выполняется для каждого запроса и поэтому не применимо на определенных маршрутах.
Затем вы можете использовать его в своих маршрутах с checkAdmin

22.02.2019 07:58:42
Вы также можете легко использовать промежуточное программное обеспечение и группу маршрутов, например:
Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function()
{
//All the routes that belongs to the group goes here
Route::get('dashboard', function() {} );
});

23.05.2019 09:55:08
Вы можете попробовать промежуточное ПО с префиксом и группами.
Route::middleware(['Auth'])->prefix('api/')->group(function() {
Route::group(['prefix' => 'review/'], function () {
Route::get('/', 'User\Controllers\Api\UserController@getUserReviews');
});
});
Надеюсь, это поможет