【发布时间】:2016-09-13 08:45:25
【问题描述】:
我很难完全理解中间件在 Laravel 5+ 中的工作原理。我有一个用户控制器,我想允许管理员通过中间件访问所有功能,然后只允许管理员访问少数功能。目前构造函数在 UserController 的顶部看起来像这样
$this->middleware('admin');
$this->middleware('manager', ['only', [
'store',
'profile',
'profileUpdate'
]]);
每个中间件如下:
public function handle($request, Closure $next)
{
if (!Auth::check()) {
return redirect()->guest('/auth/login');
}
if (Session::get('is_admin') === 1) {
return $next($request);
}
return Redirect::to('/auth/login');
}
和经理:
public function handle($request, Closure $next)
{
if (!Auth::check()) {
return redirect()->guest('/auth/login');
}
if (Session::get('is_manager') === 1) {
return $next($request);
}
return Redirect::to('/auth/login');
}
它们都列在 Kernal.php 中受保护的 $routeMiddleware 下。
所以我希望管理员能够访问“存储”功能,以便他们可以在系统中保存新用户,但是当我使用本文顶部显示的中间件时,它只会将管理员和管理员都送回到路线/。
谁能帮助解释一下构造函数中的中间件中的 except 和 only 做什么,以及为什么一个似乎取消了另一个?干杯。
【问题讨论】:
标签: laravel middleware