laravel - 对 laravel 中页面的分组访问
问题描述
在 AuthServiceProvider 内部定义了访问控制。我需要在路由 web.php 中检查访问页面的权限。如果用户不是管理员,则页面应重定向错误页面或未找到页面。
如果有人尝试从 url 访问页面,如何创建重定向到 404 页面的中间件。
身份验证服务提供者
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);
}
}
在里面注册Kernal
protected $routeMiddleware = [
...
'isTradeable' => \App\Http\Middleware\CheckIsTradeable::class,
];
并在您的路线中检查
Route::get('/home-page', function () {
return view('pages.trades');
})->middleware('isTradeable');
推荐阅读
- reactjs - 当我在主组件中更改道具时,为什么我的道具没有转到子组件?
- qradar - qradar jsp.QRadar.productName 在哪里
- flutter - DateRangePicker Flutter 主题中的圆角边框
- javascript - 如何在 jquery/javascript 中将数组转换为 Object 属性
- python - 如何使用视图在 itkwidgets 中从医学 ct 扫描中查看 3D 对象
- c# - xUnit,多个参数的 Moq 设置返回 null 而不是 Object
- python - 尽管已明确安装,但没有名为“pandas”的模块?
- mesosphere - Mesosphere DC/OS 服务部署错误
- algorithm - 以最大化同一初始集合的元素之间的距离的方式从多个集合创建单个集合
- r - phyloSignal 包的格式化问题