2013-07-07 24 views
5

Bir Laravel 4 uygulaması yapıyorum ve yönetici alanımı korumak istiyorum, böylece yalnızca kullanıcının oturum açmış/doğrulanmış olması durumunda erişilebilir.Laravel 4: Bir denetleyici tarafından sağlanan yolları koruma

Bunu yapmanın en iyi yolu nedir?

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

Ama ne olur benim rota bu benzediği zaman:

laravel docs Böyle bir rota koruyabilir söylemek

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

Ben yönlendiren bir rota korumak nasıl Bir denetleyici?

Şimdiden teşekkürler!

cevap

18

Bu amaç için Route Groups kullanabilirsiniz. Bu gibi Kontrolörün yapıcı filtreyi koyabilirsiniz

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

Merhaba çocuklar, bu kolay bir cevap uygulamaktı : Route :: group (array ('before' => 'auth'), function() { Route :: resource ('cms', 'PostsController'); }); Teşekkürler! – Josh

+0

@Josh Yardım ettiğine sevindim. –

0

PostsController'ınızda, önceki rotadaki mantıktan önce aynısını yapmak için kurucuya bir kapak ekleyebilirsiniz.

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

: örneğin Yani

- Sadece gerekli olsa

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

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

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

Bu yüzden filtreleri yalnızca belirli HTTP yöntemlerine uygulayabilir miyim? Bunu şimdi test ediyorum ... –

+0

Evet, emin misiniz? Http://laravel.com/docs/controllers#controller-filters – Melvin

İlgili konular