【发布时间】:2015-02-10 22:46:22
【问题描述】:
假设我有 2 个过滤器
1) 管理员 2) 超级管理员
过滤器:
Route::filter('Admin', function($route, $request)
{
if ( ! Auth::user()->Admin()) {
return Response::json(array('flash' => 'You are not authorized.'), 401);
}
});
Route::filter('SuperAdmin', function($route, $request)
{
if ( ! Auth::user()->SuperAdmin()) {
return Response::json(array('flash' => 'You are not authorized.'), 401);
}
});
路线:
Route::group(array('before' => array('auth|Admin')), function()
{
Route::get('/report/{id}','ReportCntrl@getreport');
Route::get('/create1','ReportCntrl@create1');
}
Route::group(array('before' => array('auth|SuperAdmin')), function()
{
Route::get('/report/{id}','ReportCntrl@getreport');
Route::get('/create2','ReportCntrl@create2');
Route::get('/create3','ReportCntrl@create3');
}
所以问题是当我从superadmin 登录时,它显示未经授权的访问
因为我认为它将我的请求传递给两个过滤器,一个批准它,另一个不批准它。
有什么方法可以让我从 Laravel 中的 2 个路由组访问相同的 url。
【问题讨论】:
-
为什么不尝试在
SuperAdmin过滤器中验证Admin -
向我们展示两个过滤器的代码,我建议制作一个并执行类似
if is_admin or is_superadmin return true; -
尝试自定义过滤器Laravel Filters
-
因为
superadmin拥有一些管理员不应该访问的权限。 -
@Kyslik 更新了问题请提出建议
标签: php laravel laravel-4 laravel-routing laravel-filters