Bagian ini berisi berbagai topik berikut:
Keamanan
Sumber data dapat beroperasi dalam salah satu dari dua mode akses berikut:
-
Dalam mode akses terbatas, yang merupakan default, sumber data hanya menayangkan permintaan yang berasal dari domain yang sama dengan tempat sumber data berada. Mode Terbatas mencegah serangan pemalsuan permintaan lintas situs (XSRF) sehingga lebih aman daripada mode akses yang tidak dibatasi. Karena library sumber data menyediakan antarmuka untuk hanya menampilkan data, dan bukan untuk mengubah status atau data di sisi server, hanya serangan XSRF yang mencoba mencuri data yang mungkin terjadi. Agar sumber data Anda aman dari upaya mencuri data, mode terbatas harus digunakan bersama dengan autentikasi berbasis cookie. Cara Anda mengautentikasi pengguna bergantung pada lingkungan dan penerapan Anda.
-
Dalam mode akses tidak terbatas, sumber data akan menayangkan semua permintaan, terlepas dari asalnya. Sumber data yang berjalan dalam mode tidak terbatas dapat dilindungi oleh autentikasi berbasis cookie, tetapi perhatikan bahwa sumber data akan rentan terhadap serangan XSRF. Gunakan mode tidak terbatas jika visualisasi di halaman web di luar domain sumber data perlu mengakses sumber data, atau jika data berada di domain publik, sehingga tidak perlu dilindungi.
Permintaan visualisasi dapat menentukan format respons JSON, CSV, atau HTML. Format respons menentukan format tempat sumber data menampilkan tabel data. Karena format CSV dan HTML tidak rentan terhadap serangan XSRF, format tersebut dapat diakses dari domain lain, bahkan dalam mode terbatas.
Untuk menentukan mode tidak terbatas, ganti isRestrictedAccessMode()
sebagai
berikut:
@Override protected boolean isRestrictedAccessMode() { return false; }
Untuk mempermudah, semua contoh yang disediakan dengan library berjalan dalam mode akses yang tidak dibatasi.
Error dan Peringatan
Jika tidak memungkinkan, atau diinginkan, untuk menampilkan tabel data yang valid,
library akan menampilkan
DataSourceException
. Misalnya jika pengguna tidak dapat diautentikasi. Library ini menampilkan pengecualian ini saat error mencegahnya membuat tabel data. Anda mungkin ingin menampilkan
pengecualian dalam situasi yang unik untuk sumber data Anda. Jika demikian, buat jenis pengecualian error Anda sendiri dengan mewarisi dari class DataSourceException
. Anda juga dapat menampilkan class DataSourceException
secara langsung.
Class DataSourceException
berada dalam paket base
, dan memerlukan parameter berikut:
ReasonType
Parameter ini wajib diisi. Jenis alasan yang tersedia ditentukan dalam enumReasonType
. Jika tidak ada jenis alasan yang tersedia yang cocok, Anda dapat menggunakanOther
atauInternal
.
MessageToUser
Parameter ini menentukan teks pesan error. Dalam sebagian besar kasus, informasi ini ditampilkan kepada pengguna sebagai tooltip, sehingga penting untuk tidak menyertakan informasi teknis atau rahasia.
Anda dapat menggunakan kumpulan fungsi bantuan di datasource.DataSourceHelper
untuk menangani error. Dalam hal ini, panggil dua fungsi dengan nama setErrorServletResponse
yang sama untuk mengambil DataSourceException
dan menetapkan error pada respons Servlet data. Salah satu fungsi ini mengambil permintaan sumber data, fungsi lainnya mengambil HttpServlet request
dan digunakan jika terjadi kegagalan dalam membuat DataSourceRequest
. Contoh
implementasi diberikan dalam Menentukan Kemampuan dan Alur Peristiwa.
Jika tidak mungkin menampilkan tabel data, library akan menampilkan error. Jika memungkinkan untuk menampilkan tabel data, tetapi ada masalah yang perlu dilaporkan, library akan menampilkan peringatan bersama dengan tabel data. Misalnya, library akan membuat peringatan dalam situasi berikut:
- jika visualisasi kueri menyediakan
LIMIT
yang menghasilkan data yang terpotong. - jika visualisasi kueri meminta pola pemformatan
yang tidak valid dalam klausul
FORMAT
.
Untuk menambahkan peringatan, buat instance base.Warning
dan tambahkan ke tabel data menggunakan metode addWarning()
.
Logging
Library menggunakan logging Common Jakarta. Logging umum Jakarta dapat digunakan dengan sistem logging paling umum yang mungkin sudah Anda miliki. Anda mungkin perlu menulis adaptor jika sistem logging non-standar. Untuk detail selengkapnya, lihat halaman beranda logging umum Jakarta.
Saat pengecualian dilempar, informasi akan dikirimkan ke log. Cara Anda mengakses log bergantung pada sistem logging yang Anda gunakan.