2015-05-20 4 views
0

У меня довольно сложное приложение, которое использует специальное промежуточное программное обеспечение для проверки подлинности. У меня есть маршрут группа, как это:Laravel Взаимозависимое промежуточное ПО вложенной группы маршрутов

Route::group(['prefix' => 'auth', 'middleware' => 'auth'], function() { 

    Route::get('/', function() { 

     echo 'private'; 
    }); 

    Route::group(['prefix' => 'public'], function() { 

     Route::get('/', function() { 

      echo 'public'; 
     }); 
    }) 
}); 

Теперь auth промежуточного слоя будет перенаправлять все запросы, которые не прошедшие проверку подлинности. Основная группа с префиксом auth аутентифицирована. Тем не менее, я хочу, чтобы группа public была доступна, даже если пользователь не аутентифицирован.

Итак:

http://example.com/auth < must be authenticated 
http://example.com/auth/some-sub-page < must be authenticated 
http://example.com/auth/public < no need for authentication 

Так есть ли способ, чтобы добавить что-то вроде 'remove-middleware' => 'auth' к вложенной группе с префиксом public? Или мне придется реструктурировать группы маршрутов?

ответ

0

Почему бы просто не обернуть промежуточное ПО auth вокруг негосударственных маршрутов?

Route::group(['prefix' => 'auth'], function() { 

    // routes requiring auth 
    Route::group(['middleware' => 'auth']) { 

     Route::get('/', function() { 

      echo 'private'; 
     }); 

    } 

    // other routes 
    Route::group(['prefix' => 'public'], function() { 

     Route::get('/', function() { 

      echo 'public'; 
     }); 

    }); 
}); 

Возможно, существует способ создания промежуточного программного обеспечения типа «удалить-промежуточное ПО», но это может стать беспорядочным. Это кажется самым чистым решением.

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