Praktik terbaik untuk data POST di TYPO3/Extbase (REST API)

Saya sedang membuat ekstensi di extbase (TYPO3 7.6, perbarui ke 8 LTS sesegera mungkin) yang salah satu fiturnya seperti REST API.
Seseorang perlu membuat objek/entri database baru dari aplikasi ponsel cerdas. Aplikasi ini hanya akan mengirimkan permintaan posting dengan Data ke URL, dan memeriksa kode status yang merespons.

Hal pertama: Bagaimana cara mengakses data Postingan?
Jika saya membuat formulir yang dapat berubah, saya akan mendapatkan objek sebagai parameter untuk tindakan saya, yang dalam banyak kasus sudah divalidasi. Namun bagaimana dengan permintaan Posting manual?
Saya tahu bahwa saya bisa mendapatkan satu parameter melalui $this->request->getArguments()
Namun apakah itu cara terbaik?
Hal kedua: Bagaimana cara mengautentikasi Pengguna?
Biasanya saya akan menggunakan formulir login dari TYPO3, dan mendapatkan ID pengguna dari $GLOBALS['TSFE']
Namun di API saya, saya tidak memiliki sesi atau Formulir login. Username dan Password hanya dapat diberikan pada setiap permintaan POST. Bagaimana cara atau haruskah saya mengautentikasi Pengguna? Saya tidak ingin menemukan kembali roda jika Extbase/TYPO3 sudah memiliki fungsi untuk itu.


person kevinq    schedule 26.01.2017    source sumber


Jawaban (1)


Untuk otentikasi Anda bisa menggunakan otentikasi dasar HTTP di mana Anda mengkodekan nama pengguna dan kata sandi base64 dan mengirimkannya melalui header dengan permintaan Anda:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Di TYPO3 Anda bisa mendaftarkan AuthenticationProvider khusus yang mengautentikasi pengguna frontend berdasarkan itu. Anda harus menggunakan HTTPS untuk ini (bagaimanapun juga, Anda harus menggunakan HTTPS).

Sedangkan untuk pembuatan record berdasarkan data POST, extbase sudah menghormati data POST, jadi jika Anda hanya memberikan data seperti yang akan dikirimkan oleh formulir yang menggunakan metode post, semuanya akan berfungsi.

Menjadi lebih rumit jika Anda perlu mencakup permintaan PUT dan DELETE juga.

person Daniel    schedule 26.01.2017