Лучшая практика для данных POST в TYPO3 / Extbase (REST API)

Я создаю расширение в extbase (TYPO3 7.6, обновите до 8 LTS как можно скорее), где одна функция похожа на REST API.
Кто-то должен создать новую запись объекта / базы данных из приложения для смартфона. Приложение просто отправит почтовый запрос с данными на URL-адрес и проверяет ответный код состояния.

Первое: как получить доступ к данным публикации?
Если я создам гибкую форму, я получу объект в качестве параметра своего действия, которое в большинстве случаев уже проверено. Но как насчет ручных запросов на публикацию?
Я знаю, что могу получить один параметр через $this->request->getArguments()
Но это лучший способ?
Второе: как аутентифицировать пользователя?
Обычно я использую форму входа из TYPO3 и получаю идентификатор пользователя из $GLOBALS['TSFE']
Но в моем API у меня нет сеанса или формы входа. Имя пользователя и пароль могут быть предоставлены только в каждом запросе POST. Как я могу или должен аутентифицировать пользователя? Я не хочу изобретать колесо, если в Extbase / TYPO3 уже есть функция для этого.


person kevinq    schedule 26.01.2017    source источник


Ответы (1)


Для аутентификации вы можете выбрать базовую аутентификацию HTTP, где вы base64 кодируете имя пользователя и пароль и отправляете его через заголовок с вашим запросом:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

В TYPO3 вы можете зарегистрировать собственный AuthenticationProvider, который аутентифицирует пользователя внешнего интерфейса на основе этого. Вы должны использовать для этого HTTPS (ну, вы должны использовать HTTPS в любом случае).

Что касается создания записи на основе данных POST, extbase уже учитывает данные POST, поэтому, если вы просто предоставите данные в том виде, в каком они будут отправлены формой, использующей метод post, все должно работать.

Это становится все сложнее, если вам нужно также охватить запросы PUT и DELETE.

person Daniel    schedule 26.01.2017