我正在构建一个Laravel 4应用程序,我想保护我的管理区域,以便只有在用户登录/验证后才能访问它。
这样做的最佳方式是什么?
Laravel文档说你可以保护这样的路线:
Route::get('profile', array('before' => 'auth', function()
{
// Only authenticated users may enter...
}));
但是当我的路线看起来像这样时会发生什么:
Route::resource('cms', 'PostsController');
如何保护指向控制器的路线?
提前致谢!
答案 0 :(得分:18)
您可以将Route Groups用于此目的。
例如:
Route::group(array('before' => 'auth'), function()
{
Route::get('profile', function()
{
// Has Auth Filter
});
Route::resource('cms', 'PostsController');
// You can use Route::resource togehter with
// direct routes to the Resource Controller
// so e.g. Route::post('cms', 'PostsController@save');
});
答案 1 :(得分:3)
您可以将过滤器放在Controller的构造函数中,如下所示:
public function __construct()
{
$this->beforeFilter('auth');
$this->beforeFilter('csrf', array('on' => 'post'));
$this->afterFilter('log', array('only' =>
array('fooAction', 'barAction')));
}
答案 2 :(得分:0)
在PostsController中,您可以在构造函数中放置一个闭包,以便在逻辑之前执行相同的操作。
public function __construct()
{
$this->beforeFilter(function()
{
//
});
}