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 melayani permintaan tersebut yang berasal dari domain yang sama dengan tempat sumber data tersebut berada. Mode terbatas mencegah serangan pemalsuan permintaan lintas situs (XSRF) sehingga lebih aman daripada mode akses tidak terbatas. Karena library sumber data menyediakan antarmuka hanya untuk menampilkan data, bukan untuk mengubah status atau data di sisi server, hanya serangan XSRF yang mencoba mencuri data. Agar sumber data Anda aman dari upaya pencurian 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 melayani semua permintaan, terlepas dari asalnya. Sumber data yang berjalan dalam mode tidak terbatas dapat dilindungi oleh autentikasi berbasis cookie, tetapi perlu diperhatikan 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 yang digunakan sumber data untuk menampilkan tabel data. Karena format CSV dan HTML tidak rentan terhadap serangan XSRF, format ini 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 dijalankan dalam mode akses tidak terbatas.
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 akan menampilkan pengecualian ini
saat error mencegahnya membuat tabel data. Anda mungkin ingin menampilkan
pengecualian dalam situasi yang unik untuk sumber data Anda. Jika ya,
buat jenis pengecualian error Anda sendiri dengan mewarisi dari class
DataSourceException
. Anda juga dapat menampilkan class DataSourceException
secara langsung.
Class DataSourceException
terletak dalam paket base
, yang menggunakan parameter berikut:
ReasonType
Parameter ini wajib. 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. Biasanya, 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 yang lain mengambil HttpServlet request
, dan digunakan jika terjadi kegagalan dalam membuat DataSourceRequest
. Contoh
implementasi disediakan dalam Menentukan Kemampuan dan Alur Peristiwa.
Jika tabel data tidak dapat ditampilkan, library akan menampilkan error. Jika tabel data dapat ditampilkan, tetapi ada masalah yang perlu dilaporkan, library akan menampilkan peringatan bersama dengan tabel data. Misalnya, library membuat peringatan dalam situasi berikut:
- jika visualisasi kueri memberikan
LIMIT
yang menghasilkan data terpotong. - jika visualisasi kueri meminta pola pemformatan
yang tidak valid dalam klausa
FORMAT
.
Untuk menambahkan peringatan,
buat instance base.Warning
dan tambahkan ke
tabel data menggunakan metode addWarning()
.
Logging
Perpustakaan ini menggunakan logging commons Jakarta. Jakarta commons logging dapat digunakan dengan sistem logging paling umum yang mungkin sudah Anda miliki. Anda mungkin perlu menulis adaptor jika sistem logging Anda tidak standar. Untuk mengetahui detail selengkapnya, lihat halaman beranda logging umum Jakarta.
Jika pengecualian ditampilkan, informasi akan dikirim ke log. Cara Anda mengakses log bergantung pada sistem logging yang Anda gunakan.