我正在使用Laravel 4.2 我有一条像这样的资源路线:
Route::resource('customers', 'CustomersController');
如何添加过滤器,让我们说' auth '过滤到所有相应的路由以及如何仅定位其中一些路径,假设我只想过滤对命名路径的访问权限 customers.create ”。
答案 0 :(得分:1)
您可以在Controller的构造函数中定义过滤器:
public function __construct()
{
$this->beforeFilter('auth', ['only' => ['update', 'store']]);
}
如果您有许多资源,可以使用路线组:
Route::group(['before'=>'auth'], function () {
Route::resource('customers', 'CustomersController');
// ... another resource ...
});
...并在每个Controller的构造函数中指定beforeFilter。
或强>
在routes.php中使用简单的 if 语句:
if (Auth::check()) {
Route::resource('customers', 'CustomersController');
} else {
Route::resource('customers', 'CustomersController', ['except' => ['update', 'store']]);
}
为使用相同过滤器并扩展它的资源创建基本控制器:
class AuthorizedController extends BaseController {
// ... constructor with beforeFilter definition ...
}
class CustomersController extends AuthorizedController { ... }