2015-12-02 2 views
1

Я пытаюсь использовать промежуточное ПО Authenticate глобально, за исключением auth/login и auth/logout, так что мне не нужно добавлять его в каждый контроллер. Я добавил его в список глобальных промежуточных программ в Kernel (как показано ниже); однако он застревает в бесконечном перенаправлении auth/login. Для любого гостя, я хочу, чтобы страница была перенаправлена ​​на auth/login и осталась там.Laravel 5.1: использование промежуточного ПО по умолчанию Auth глобально

class Kernel extends HttpKernel 
{ 
    protected $middleware = [ 
     ... 
     \App\Http\Middleware\Authenticate::class, 
    ]; 
} 

Это происходит потому, что, когда она попадает auth/login в первый раз, глобальные Authenticate пинки в и перенаправляет auth/login снова снова и снова.

Возможно ли использовать промежуточное ПО по умолчанию Authenticate, как я описал? Нужно ли мне создавать для него новое промежуточное ПО?

Редактировать: Я пришел к выводу, что подход Томаса достаточно хорош.

ответ

3

Вы всегда можете использовать Route Groups. В файле routes.php ...

// Your login/logout routes 
Route::get('login', 'Auth\[email protected]'); 
Route::post('login', 'Auth\[email protected]'); 
Route::get('logout', 'Auth\[email protected]'); 

Route::group(['middleware' => 'auth'], function() { 
    // Put all other routes here and the auth middleware will be applied on them all 
}); 

Edit: Кроме того, вам не нужно, чтобы добавить Authenticate промежуточное программное обеспечение для глобального стека промежуточного программного обеспечения. Просто оставьте его по умолчанию $routeMiddleware.

'auth' => \App\Http\Middleware\Authenticate::class, 
+0

Если используется перегруппировка, не нужно ли перечислять отдельные маршруты? Я ищу минималистский подход к назначению промежуточного программного обеспечения auth. – musicliftsme

+0

Что значит? В любом случае вы должны перечислить свои маршруты. Вы добавляете две строки кода для применения промежуточного ПО auth на всех, кроме маршрутов входа/выхода. –

+0

Я имею в виду, если мой указательный контроллер имеет X количество маршрутов, мне нужно будет указать X-записи для группировки, нет? Я могу добавить промежуточное ПО в контроллер, чтобы позаботиться об этом в одной строке. – musicliftsme