我在extbase中构建扩展(TYPO3 7.6,尽快更新到8 LTS),其中一个功能类似于REST API。
有人需要从智能手机应用程序创建新的对象/数据库条目。应用程序只会将带有数据的发布请求发送到URL,并检查响应的状态代码。
第一件事:如何访问发布数据?
如果我构建一个流体形式,我将获得一个对象作为我的动作的参数,这在大多数情况下已经过验证。但手动发布请求怎么样?
我知道我可以通过$this->request->getArguments()
获得一个参数
但那是最好的方法吗?
第二件事:如何验证用户?
通常我会使用TYPO3中的登录表单,并从$GLOBALS['TSFE']
获取用户ID
但在我的API中,我没有会话或登录表单。用户名和密码只能在每个POST请求中提供。我该如何或应该对用户进行身份验证?
如果Extbase / TYPO3已经有了这个功能,我不想重新发明轮子。
答案 0 :(得分:0)
对于身份验证,您可以进行HTTP基本身份验证,其中base64编码用户名和密码,并通过标头发送请求:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
在TYPO3中,您可以注册一个自定义AuthenticationProvider,根据该身份对前端用户进行身份验证。你应该使用HTTPS(好吧,你应该在任何情况下使用HTTPS)。
至于基于POST数据创建记录,extbase已经尊重POST数据,所以如果你只提供使用post方法的表单提交的数据,那么一切都应该有效。
如果你还需要覆盖PUT和DELETE请求,那就变得越来越棘手了。