如果 N 个过滤器中至少有一个成功,在 Laravel 中是否有方法允许访问路由?例如:
Route::get('/user/{id}', array('uses' => 'UserController@profile', 'before' => 'requireAdmin|requireIsMe'));
此过滤器将需要requireAdmin
和requireIsMe
来授予对路由的访问权限,但我需要的是一种方法来表示requireAdmin
或 requireIsMe
足以允许访问。这可能吗,还是我必须创建一个将它们结合起来的新过滤器(这是一个糟糕的解决方案,因为我必须对所有过滤器组合都这样做)?
过滤器看起来有点像:
Route::filter('requireAdmin', function () {
if(Session::get('user')->GetRole() != Role.Admin)
return Redirect::to('/');
});
Route::filter('requireIsMe', function($id) {
if(Session::get('user')->GetId() != $id)
return Redirect::to('/');
});
我需要的是:给定这两个过滤器,有没有办法告诉一个路由只有一个需要通过才能让请求正常继续(在这个例子中,管理员和具有匹配 ID 的用户都应该能够继续/user/{id}
)。这可能吗?还是有更聪明的方法来处理这种过滤?