Laravel 4:保护控制器提供的路线

时间:2013-07-07 13:05:04

标签: php laravel laravel-4

我正在构建一个Laravel 4应用程序,我想保护我的管理区域,以便只有在用户登录/验证后才能访问它。

这样做的最佳方式是什么?

Laravel文档说你可以保护这样的路线:

Route::get('profile', array('before' => 'auth', function()
{
// Only authenticated users may enter...
}));

但是当我的路线看起来像这样时会发生什么:

Route::resource('cms', 'PostsController');

如何保护指向控制器的路线?

提前致谢!

3 个答案:

答案 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()
        {
            //
        });
    }