2016-08-01 2 views
0

Учитывая я отправляю к конечной точке, как так:Apigility InputFilter инъекции

POST http://foo.com/user/:user_id/articles

{ 
    "content": "some text" 
} 

, когда я настроить валидатор в пределах конфигурации Я изо всех сил, чтобы найти, как впрыскивать: user_id от маршрут вместе с «содержанием» из тела. Таким образом, мой валидатор застрял, пытаясь проверить, поддерживается ли «контент» без: user_id.

Каков правильный способ Apigility для ввода идентификаторов (или даже идеально объектов) из параметров маршрута в валидатор (ы) вместе с полезной нагрузкой нормального тела $ data?

Большое спасибо

+0

Вы можете создать свой собственный фильтр и выполнить любую необходимую обработку. – yivi

ответ

0

Насколько я знаю, apigility не имеет никакой возможности проверить параметры маршрута. Лично я проверяю их в ресурсе или контроллере. Таким образом, я могу сделать еще более сложную проверку, как этот идентификатор существует?

Если вы хотите, чтобы объект был параметром маршрута, вы можете выполнить сериализацию объекта и поместить его в свой параметр. Но я бы советовал против этого. Вы бы даже доверяли внешней стороне предоставить вам целые объекты? Если вам нужна информация о пользователе, вы можете посмотреть JWT или аналогичные методы. JWT - это токен авторизации, который также содержит любые данные (на основе json).

Теперь любые параметры тела могут быть проверены. В apigility ui вы можете перейти к полям и добавить поля, которые вы хотите проверить там (или все они должны быть для простоты). Затем вы можете назначить фильтры и валидаторы здесь. Даже пользовательские, которые вы настроили в своем приложении zf2.

+0

К сожалению, как упоминалось выше, apigility не будет применять фильтры для запроса строковых параметров, вам придется обрабатывать их вручную. – Andrew

+0

Да, это правильно и к несчастью. Он может быть продлен, чтобы фильтровать их. – Erik

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