5

我正在构建一个 Laravel 4 应用程序,并且我想保护我的管理区域,因此只有在用户登录/经过身份验证时才能访问它。

做这个的最好方式是什么?

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

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

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

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

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

提前致谢!

4

3 回答 3

18

您可以为此目的使用路由组。

例如:

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');
});
于 2013-07-07T13:14:22.747 回答
3

您可以将过滤器放在 Controller 的构造函数上,如下所示:

public function __construct()
    {
        $this->beforeFilter('auth');

        $this->beforeFilter('csrf', array('on' => 'post'));

        $this->afterFilter('log', array('only' =>
                            array('fooAction', 'barAction')));
    }
于 2013-07-07T13:14:31.323 回答
0

在您的 PostsController 中,您可以在构造函数中放置一个闭包,以便在逻辑之前执行与前一个路由相同的操作。

    public function __construct()
    {
        $this->beforeFilter(function()
        {
            //
        });
    }
于 2013-07-07T13:11:07.810 回答