组访问laravel中的页面

组访问laravel中的页面,laravel,access-control,Laravel,Access Control,在AuthServiceProvider内部定义了访问控制。我需要在routes web.php中检查访问页面的权限。 若用户不是管理员,那个么页面应该重定向错误页面或找不到页面 如果有人试图从url访问404页面,如何创建重定向到404页面的中间件 AuthServiceProvider Gate::define('isAdmin',function($user){ return $user->type === 'admin'; }); Gate::define('isGene

在AuthServiceProvider内部定义了访问控制。我需要在routes web.php中检查访问页面的权限。 若用户不是管理员,那个么页面应该重定向错误页面或找不到页面

如果有人试图从url访问404页面,如何创建重定向到404页面的中间件

AuthServiceProvider

Gate::define('isAdmin',function($user){
    return $user->type === 'admin';
});

Gate::define('isGeneralUser',function($user){
    return $user->type === 'user';
});

Gate::define('isPaidUser',function($user){
    return $user->type === 'paid';
});
路由web.php

if (Gate::allows('isAdmin') && Gate::allows('isPaidUser')) {
    Route::get('/home-page', function () {
        return view('pages.trades');
    });
}

创建中间件

class CheckIsTradeable
{

    public function handle($request, Closure $next)
    {
        if ($request->user()->type !== 'admin' && $request->user()->type !== 'paid') {
            abort(404);
        }

        return $next($request);
    }
}
Route::get('/home-page', function () {
    return view('pages.trades');
})->middleware('isTradeable');
内核中注册

protected $routeMiddleware = [
    ...
    'isTradeable' => \App\Http\Middleware\CheckIsTradeable::class,
];
并在您的路线中进行检查

class CheckIsTradeable
{

    public function handle($request, Closure $next)
    {
        if ($request->user()->type !== 'admin' && $request->user()->type !== 'paid') {
            abort(404);
        }

        return $next($request);
    }
}
Route::get('/home-page', function () {
    return view('pages.trades');
})->middleware('isTradeable');

创建中间件

class CheckIsTradeable
{

    public function handle($request, Closure $next)
    {
        if ($request->user()->type !== 'admin' && $request->user()->type !== 'paid') {
            abort(404);
        }

        return $next($request);
    }
}
Route::get('/home-page', function () {
    return view('pages.trades');
})->middleware('isTradeable');
内核中注册

protected $routeMiddleware = [
    ...
    'isTradeable' => \App\Http\Middleware\CheckIsTradeable::class,
];
并在您的路线中进行检查

class CheckIsTradeable
{

    public function handle($request, Closure $next)
    {
        if ($request->user()->type !== 'admin' && $request->user()->type !== 'paid') {
            abort(404);
        }

        return $next($request);
    }
}
Route::get('/home-page', function () {
    return view('pages.trades');
})->middleware('isTradeable');

如果我还有更多呢roles@BLPraveen我不understand@BLPraveen有两种方法可以做到这一点,您可以为检查付费用户创建另一个中间件,或者在一个中间件中检查这两种情况,将中间件命名为isTradeable。如何在一个中间件中检查这两种情况如果我有更多roles@BLPraveen我不understand@BLPraveen有两种方法可以做到这一点,您可以为检查付费用户创建另一个中间件,或者在一个中间件中检查这两种情况,将您的中间件命名为isTradeable。如何在一个中间件中检查这两种情况