2013-07-07 9 views
5

私はLaravel 4アプリを構築しています。ユーザーがログイン/認証されている場合にのみアクセスできるように管理領域を保護したいと考えています。Laravel 4:コントローラによって提供される経路を保護する

これを行うにはどのような方法が最適ですか?

Laravelのドキュメントは、あなたがこのようなルートを保護することができると言う:

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

しかし、どのような私のルートは次のようになります場合に発生する:

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

どのように私は指示されたルートを保護しますコントローラー?

ありがとうございます!

答えて

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', '[email protected]'); 
}); 
+1

こんにちはみんなは、これは簡単には答えを実装しました: Route :: group(array( 'before' = 'auth')、function() { Route :: resource( 'cms'、 'PostsController'); }); ありがとう! – Josh

+0

@Josh Gladはそれを助けました。 –

0

あなたのPostsControllerでは、以前のルートと同じ前に同じことを行うためにクロージャをコンストラクタに置くことができます。

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

:例えばだから、

- 私は必要なものの

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

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

     $this->afterFilter('log', array('only' => 
          array('fooAction', 'barAction'))); 
    } 
+0

特定のHTTPメソッドに対してのみフィルタを適用できますか?これを今すぐテストしてください... –

+0

はいできますかhttp://laravel.com/docs/controllers#controller-filters – Melvin

関連する問題