In questa sezione analizzeremo i seguenti argomenti:
Sicurezza
Un'origine dati può funzionare in una delle seguenti due modalità di accesso:
-
Nella modalità di accesso limitato, che è l'impostazione predefinita, un'origine dati gestisce solo le richieste che hanno origine dallo stesso dominio di quello in cui si trova l'origine dati. La modalità con restrizioni previene gli attacchi XSRF (Cross-site Request Forgery) ed è quindi più sicura rispetto alla modalità di accesso senza restrizioni. Poiché la libreria delle origini dati fornisce un'interfaccia solo per la restituzione dei dati e non per la modifica dello stato o dei dati sul lato server, sono possibili solo gli attacchi XSRF che tentano di rubare i dati. Per proteggere l'origine dati dai tentativi di furto di dati, devi utilizzare la modalità con restrizioni insieme all'autenticazione basata su cookie. Il modo in cui autentichi gli utenti dipende dall'ambiente e dall'implementazione.
-
In modalità di accesso senza restrizioni, un'origine dati gestisce tutte le richieste, indipendentemente dalla loro origine. Un'origine dati eseguita in modalità senza restrizioni può essere protetta dall'autenticazione basata su cookie, ma tieni presente che l'origine dati sarà vulnerabile agli attacchi XSRF. Utilizza la modalità senza restrizioni se le visualizzazioni su pagine web esterne al dominio dell'origine dati devono accedere all'origine dati o se i dati sono di dominio pubblico e quindi non devono essere protetti.
Una richiesta di visualizzazione può specificare un formato di risposta JSON, CSV o HTML. Il formato della risposta determina il formato in cui un'origine dati restituisce una tabella di dati. Poiché i formati CSV e HTML non sono vulnerabili agli attacchi XSRF, è possibile accedervi da altri domini, anche in modalità con restrizioni.
Per specificare la modalità senza restrizioni, esegui l'override di isRestrictedAccessMode()
come segue:
@Override protected boolean isRestrictedAccessMode() { return false; }
Per semplicità, tutti gli esempi forniti con la libreria vengono eseguiti in modalità di accesso senza restrizioni.
Errori e avvisi
Quando non è possibile o desiderabile restituire una tabella di dati valida, la libreria genera un
DataSourceException
. ad esempio se l'utente non può essere autenticato. La libreria genera queste eccezioni quando gli errori gli impediscono di creare una tabella di dati. Potresti voler creare delle eccezioni
nelle situazioni specifiche dell'origine dati. In tal caso, crea i tuoi tipi di eccezioni di errore ereditati dalla classe DataSourceException
. Puoi anche creare il corso DataSourceException
direttamente.
La classe DataSourceException
si trova nel pacchetto base
e richiede i seguenti parametri:
ReasonType
Questo parametro è obbligatorio. I tipi di motivo disponibili sono definiti nell'enumerazioneReasonType
. Se nessuno dei tipi di motivi disponibili è adatto, puoi utilizzareOther
oInternal
.
MessageToUser
Questo parametro definisce il testo del messaggio di errore. Nella maggior parte dei casi, vengono mostrate all'utente come descrizione comando, quindi è importante non includere informazioni tecniche o riservate.
Puoi utilizzare l'insieme di funzioni helper
in datasource.DataSourceHelper
per gestire
gli errori. In questo caso, chiama due funzioni entrambe con lo stesso nome setErrorServletResponse
per acquisire un DataSourceException
e impostare un errore nella risposta del servlet dei dati. Una di queste funzioni accetta una richiesta dell'origine dati, l'altra accetta un valore HttpServlet request
e viene utilizzata nei casi
in cui si verifica un errore per la creazione di un DataSourceRequest
. Un esempio di implementazione è riportato in Definizione delle funzionalità e flusso di eventi.
Se non è possibile restituire una tabella di dati, la libreria restituisce un errore. Se è possibile restituire una tabella di dati, ma si verifica un problema da segnalare, la libreria restituisce un avviso insieme alla tabella di dati. Ad esempio, la libreria crea un avviso nelle seguenti situazioni:
- se una visualizzazione con query fornisce un valore
LIMIT
, che genera dati troncati. - se una visualizzazione con query richiede un pattern
di formattazione non valido in una clausola
FORMAT
.
Per aggiungere un avviso personalizzato,
crea un'istanza di base.Warning
e aggiungila alla tabella
dati utilizzando il metodo addWarning()
.
Logging
La biblioteca utilizza l'estrazione dei dati del Comune di Giacarta. Il logging dei dati comuni di Giacarta può essere utilizzato con i sistemi di registrazione più comuni che potresti già avere. Potresti dover scrivere un adattatore se il tuo sistema di logging non è standard. Per ulteriori dettagli, consulta la home page di logging di Commons di Giacarta.
Quando viene generata un'eccezione, le informazioni vengono inviate al log. La modalità di accesso al log dipende dal sistema di logging utilizzato.