2017-01-26 11 views
0

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

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

ответ

0

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

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== 

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

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

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