2013-07-07 29 views
5

Tôi đang xây dựng ứng dụng Laravel 4 và tôi muốn bảo vệ khu vực quản trị của mình để chỉ truy cập được nếu người dùng đăng nhập/xác thực.Laravel 4: bảo vệ các tuyến đường được cung cấp bởi bộ điều khiển

Cách tốt nhất để làm điều này là gì?

Các tài liệu Laravel nói rằng bạn có thể bảo vệ một tuyến đường như thế này:

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

Nhưng điều gì sẽ xảy ra khi tuyến đường của tôi trông như thế này:

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

Làm thế nào để bảo vệ một tuyến đường được hướng đến một bộ điều khiển?

Cảm ơn trước!

Trả lời

18

Bạn có thể sử dụng Route Groups cho mục đích này.

Vì vậy, ví dụ:

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

Hi guys, đây là một cách dễ dàng để thực hiện câu trả lời - mặc dù tôi chỉ cần : Tuyến đường :: nhóm (mảng ('trước' => 'auth'), hàm() { Tuyến đường :: tài nguyên ('cms', 'PostsController'); }); Cảm ơn! – Josh

+0

@Josh Vui vì nó đã giúp. –

0

Trong PostsController của bạn, bạn có thể đặt một đóng trong constructor để làm tương tự trước khi logic như các tuyến đường trước đó.

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

Bạn có thể đặt bộ lọc trên các nhà xây dựng của bộ điều khiển của bạn như thế này:

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

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

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

Vì vậy, tôi chỉ có thể áp dụng các bộ lọc cho một số phương thức HTTP nhất định? Kiểm tra này ngay bây giờ ... –

+0

Có bạn chắc chắn có thể làm ... http://laravel.com/docs/controllers#controller-filters – Melvin

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