2015-03-04 3 views
0

Я заметил, что в примере WelcomeController, который требует, чтобы пользователь вошел в имеет:Laravel 5 BaseController для middlewear Auth

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

Должен ли я создать BaseController, расширяющий контроллер, который содержит приведенный выше код для всех контроллеров, нужно, чтобы пользователь вошел в систему и расширил все мои контроллеры от этого?

ответ

0

Я бы не рекомендовал это. Вместо этого, рассмотреть возможность применения Middleware своим маршрутам, как здесь:

Route::group(['middleware' => 'auth'], function() 
{ 
    Route::get('/', function() 
    { 
     // Has Auth Filter 
    }); 

    Route::get('user/profile', function() 
    { 
     // Has Auth Filter 
    }); 
}); 

который также включен пример по умолчанию на grouped routes in the laravel docs кстати.

EDIT

Предоставление другого BaseController возможно, так как это, очевидно, работает. Но подумайте о более сложных ситуациях, когда middlewares, возможно, придется применять только к некоторым, но не ко всем методам контроллера.

Маршруты предлагают гораздо больше гибкости в этих случаях.

Но самое главное - оставаться последовательным. Поэтому просто выберите то, что применимо, но не позволяйте себе самим смешивать его подходы. Таким образом, ваше приложение остается поддерживаемым.

Еще одна важная вещь, которую следует отметить, заключается в том, что этот подход очень похож на Laravel 4 -way для решения этой проблемы (Route Filters). Поэтому, если вы решите сделать это таким образом, люди, переключающиеся с L4, могут не понимать, что там происходит.

+0

Не могли бы вы объяснить, почему вы используете маршрутизатор над контроллером? Я использовал этот метод с laravel 4, но использовал метод OPs с laravel 5. – Wader

+0

Отредактировал мой ответ – nozzleman

Смежные вопросы