【问题标题】:Laravel 4: protecting routes provided by a controllerLaravel 4:保护控制器提供的路由
【发布时间】:2013-07-04 22:41:24
【问题描述】:

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

最好的方法是什么?

Laravel 文档说你可以像这样保护路由:

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

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

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

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

提前致谢!

【问题讨论】:

    标签: php laravel laravel-4


    【解决方案1】:

    您可以为此使用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');
    });
    

    【讨论】:

    • 大家好,这是一个易于实现的答案——尽管我只需要: Route::group(array('before' => 'auth'), function() { Route::resource( 'cms', 'PostsController'); });谢谢!
    【解决方案2】:

    您可以像这样将过滤器放在控制器的构造函数上:

    public function __construct()
        {
            $this->beforeFilter('auth');
    
            $this->beforeFilter('csrf', array('on' => 'post'));
    
            $this->afterFilter('log', array('only' =>
                                array('fooAction', 'barAction')));
        }
    

    【讨论】:

      【解决方案3】:

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

          public function __construct()
          {
              $this->beforeFilter(function()
              {
                  //
              });
          }
      

      【讨论】:

        猜你喜欢
        • 2016-04-15
        • 1970-01-01
        • 1970-01-01
        • 2013-06-11
        • 1970-01-01
        • 1970-01-01
        • 2014-06-23
        • 2013-08-20
        • 1970-01-01
        相关资源
        最近更新 更多