Промежуточное ПО Slim Authentication для всех маршрутов, кроме кого-то - PullRequest
0 голосов
/ 17 июня 2019

Я хотел бы иметь промежуточное ПО Slim для проверки аутентификации по всем запросам, кроме некоторых конкретных (например, страницы входа в систему). Я подготовил первое AuthenticationMiddleware связующее ПО для проверки всех страниц:

$app->add(new \App\Middleware\AuthenticationMiddleware($container));

Затем я создаю еще один AnonymousMiddleware, в который предполагается добавить переменную для установки исключения для проверок подлинности:

$app->group('',function() use ($app){
    $app->get('/','LogicController:index');    
})->add(new AnonymousMiddleware($container));

Проблема в том, что промежуточное программное обеспечение маршрутов (AnonymousMiddleware) применяется ПОСЛЕ общего промежуточного программного обеспечения (AuthenticationMiddleware);

Я пытался использовать determineRouteBeforeAppMiddleware, но это не меняет результат.

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

1 Ответ

0 голосов
/ 22 июля 2019

вам нужно выбрать другой подход

вам нужно обернуть все маршруты, которые должны быть "защищены промежуточным программным обеспечением Auth", и исключить = не обернуть маршруты, которые не должны обрабатываться этим промежуточным программным обеспечением

вы можете добавить группу, в которой будут жить все ваши маршруты, и только маршрут входа (и выхода) будет вне этой группы;)

что-то вроде

$app->group("/api/v1", function() { 
 // all your protected routes definitions here
})
->add(AuthenticationMiddleware::class)); // wrap by middleware

$app->post('/login', function(){});

$app->add(new MiddlewareForAllRoutes()); // middlewares for all routes
...