Частичное применение промежуточного программного обеспечения приложений с помощью Slim PHP Framework

Я пишу REST API со Slim и хочу, чтобы некоторые части моего API требовали входа в систему, а некоторые были общедоступны. Для аутентификации я использую промежуточное ПО StrongAuth от Slim Extras.

К сожалению, StrongAuth убивает запрос, если аутентификация не предоставляется, и является промежуточным программным обеспечением приложения (которое, кажется, все или ничего), поэтому я создавал свой API, полностью защищенный StrongAuth, позволяя получать доступ к общедоступным ресурсам с помощью фиктивного входа. .

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

Кто-нибудь знает способ применить промежуточное программное обеспечение уровня приложения только к некоторым маршрутам в Slim или как без проблем запускать несколько приложений Slim в одном файле?


person John Zeringue    schedule 16.10.2013    source источник


Ответы (1)


Все тонкие промежуточные программы реализуют общедоступный метод call(), вы можете попробовать добавить его к желаемому маршруту таким образом. Для этого вам нужно получить экземпляр вашего промежуточного программного обеспечения ($auth), не используя его в качестве промежуточного программного обеспечения.

$app->get('/yourSecuredRoute', array($auth,'call'), function() use($app){
        $app->render('index.html');
});

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

person webaba    schedule 17.10.2013
comment
Спасибо! Я не очень разбираюсь в PHP, и этого не было в документации. - person John Zeringue; 17.10.2013
comment
Нет, если strongAuth на уровне приложения и вы используете его в качестве промежуточного программного обеспечения маршрута, он будет запускаться дважды на этом маршруте ... Я думаю ... @john это сработало, как вы ожидали? - person KnF; 30.10.2014
comment
Если я правильно помню, вы не должны добавлять его как промежуточное ПО на уровне приложения, а только для определенного маршрута. - person webaba; 30.10.2014