2015-09-14 17 views
5

Sto lavorando su un sistema basato su Laravel 5.1. Ho una risorsa percorso:Auth su funzioni controller specifiche Laravel 5.1

Route::resource('applicant', 'ApplicantController'); 

Quindi, come ci aspettiamo che ha le seguenti funzioni nel controllore:

index, create, store, edit, update, delete 

E quello che voglio è quello di applicare l'autenticazione middleware nel solo la funzione index. Normalmente, se si desidera applicare Auth su tutto il controllore, è necessario fare:

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

Ma quando rimuovo e basta fare:

public function index() 
{ 
    $this->middleware('auth'); 
    return view('applicant.index'); 
} 

Non funziona. L'ho già fatto e funziona bene. Questo è nel mio ApplicantController Voglio la funzione create essere pubblica e applicare solo l'autenticazione di login su index. Io non sarò con edit, update, delete

risposta

5

si può provare

public function __construct() 
{ 
    $this->middleware('auth', ['only' => 'index']); 
} 

Si può anche fare il contrario

public function __construct() 
{ 
    $this->middleware('auth', ['except' => ['create', 'store', 'edit', 'update', 'delete']]); 
} 
+0

Wows, funziona perfettamente. Grazie! – jackhammer013

+0

cool .. Felice di poter aiutare. – JLPuro

+0

Non è necessario utilizzare il metodo _construct, perché ogni volta che si verificano le modifiche a un determinato controller, lo sviluppatore dovrebbe modificarlo in modo specifico su ciascun controller. L'opzione migliore è aggiungere la funzione auth all'interno del percorso e specificare i controller. Se hai problemi con la funzione di autenticazione fornita, puoi crearne una e specificarla sul kernal. –