2013-09-05 5 views
6

Mam ten zasób blogu, który ma zwykłe metody CRUD (indeks, tworzenie, przechowywanie, wyświetlanie, edytowanie, aktualizowanie, niszczenie).Uwierzytelnianie Laravel 4. Ogranicz dostęp do niektórych funkcji zasobu, ale nie wszystkie

Mam następującą trasę w moim routes.php:

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

ale chcę ograniczać wszystko ale indeksu i show. więc mam

Route::get('blog', '[email protected]'); 
Route::group(array('before' => 'auth'), function() 
{ 
    Route::resource('blog', 'PostsController'); 
}); 

co jest w porządku dla indeksu, ale nie wiem jak trasa metodę show? A może jest inny sposób? Zamiast routować zasób, czy powinienem indywidualnie routować każdy URI i umieszczać te, które chcę ograniczyć w mojej ograniczonej drodze dostępu?

Cheers

Odpowiedz

12

laravel posiada funkcję, która pozwala określić filtry w __construct metody kontrolerów używając $this->beforeFilter. Ta funkcja pobiera drugi argument, który pozwala na zapewnienie wyjątków (lub włącz filtr tylko dla niektórych metod). Spróbuj użyć pliku oryginalne trasy i skonfigurować sterownik tak:

class PostsController extends BaseController { 

    function __construct() { 
     // ... 
     $this->beforeFilter('auth', array('except' => array('index', 'show'))); 
     // ... 
    } 

    // ... 

filtry Sprawdź sterownik w Laravel documentation. Nie jest to całkowicie udokumentowane, ale możesz także rozpocząć głębszą podróż do wnętrzności Laravel z here.

+0

Thank wygląda ważnej opcji –

+1

działa dobrze, wiwaty za to znacznie czystsze niż moje! –

+0

Dokładnie tego, czego szukałem. Laravel jest niesamowita. –

0

W laravel 5 użyć funkcji middleware zamiast tak:

$this->middleware('auth', array('except' => array('index', 'show'))); 
Powiązane problemy