2015-09-14 15 views
5

Tôi đang làm việc trên một hệ thống dựa trên Laravel 5.1. Tôi có một nguồn đường:Xác thực trên các chức năng điều khiển cụ thể Laravel 5.1

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

Vì vậy, chúng tôi hy vọng nó có các chức năng sau đây trong bộ điều khiển:

index, create, store, edit, update, delete 

Và những gì tôi muốn là để áp dụng các auth middleware trong chỉ index chức năng. Thông thường, nếu bạn muốn áp dụng Auth trên toàn bộ điều khiển, bạn cần làm:

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

Nhưng khi tôi gỡ bỏ nó và chỉ cần làm:

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

Nó không làm việc. Tôi đã làm điều này trước đây và hoạt động tốt. Đây là trong số ApplicantController Tôi muốn chức năng create được công khai và chỉ áp dụng xác thực đăng nhập trên index. Tôi sẽ không được sử dụng edit, update, delete

Trả lời

5

bạn có thể thử

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

Bạn cũng có thể làm điều ngược lại

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

wows, hoạt động hoàn hảo. Cảm ơn! – jackhammer013

+0

cool .. Vui vì tôi có thể giúp. – JLPuro

+0

Bạn không cần sử dụng phương pháp _construct, bởi vì bất cứ khi nào các thay đổi xảy ra với một bộ điều khiển cụ thể, nhà phát triển sẽ phải thay đổi nó trên từng bộ điều khiển cụ thể. Tùy chọn tốt nhất là thêm chức năng auth bên trong tuyến đường và chỉ định các bộ điều khiển. Nếu bạn có bất kỳ vấn đề nào với hàm auth được cung cấp, bạn có thể tạo một hàm và chỉ định nó trên kernal. –

Các vấn đề liên quan