У вас есть несколько вариантов:
- Если у Api есть только несколько маршрутов, требующих аутентификации, вы можете вручную добавить промежуточное ПО только для этих маршрутов, поэтому для остальных из них аутентификация не требуется.Например:
'home' => [
'path' => '/',
'middleware' => [YourAuthenthicationMiddleware::class, HomePageHandler::class],
'allowed_methods' => ['GET'],
'name' => 'home',
],
Если есть несколько маршрутов, которые не требуют аутентификации, вы можете поместить их в путь, отличный от пути от Apis, и добавить этот конвейер:
$app->pipe('/api', YourAuthenthicationMiddleware::class);
No auth path: /myApp/any/path
Auth path: /api/any/path
Установите ключ для каждого маршрута и проверьте его в промежуточном программном обеспечении аутентификации
Route:
'login' => [
'path' => '/login[/]',
'middleware' => LoginHandler::class,
'allowed_methods' => ['GET', 'POST'],
'name' => 'login',
'authentication' => [
'bypass' => true,
],
],
AuthenticationMiddleware:
$this->routeConfiguration = $config['routes'];
$routeResult = $request->getAttribute(RouteResult::class);
...
if (empty($this->routeConfiguration[$routeResult->getMatchedRouteName()]['authentication']['bypass'])) {
//try to authenticate
}
Для последнего варианта убедитесь, что этот канал введен:
$app->pipe(RouteMiddleware::class);