Obsługa zabezpieczeń, błędów, ostrzeżeń i logowania

W tej sekcji omówiono następujące tematy:

Bezpieczeństwo

Źródło danych może działać w 1 z 2 trybów dostępu:

  • W domyślnym trybie ograniczonego dostępu źródło danych obsługuje tylko żądania pochodzące z tej samej domeny, w której znajduje się źródło danych. Tryb ograniczonego dostępu zapobiega atakom typu XRTF. Biblioteka źródła danych ma interfejs tylko do zwracania danych, a nie do zmiany stanu czy danych po stronie serwera, więc tylko ataki XSRF mogą być próbą kradzieży danych. Aby zabezpieczyć źródło danych przed próbami kradzieży danych, musisz używać trybu ograniczonego dostępu w połączeniu z uwierzytelnianiem na podstawie plików cookie. Sposób uwierzytelniania użytkowników zależy od środowiska i implementacji.

  • W trybie nieograniczonego dostępu źródło danych obsługuje wszystkie żądania, niezależnie od ich źródła. Źródło danych uruchomione w trybie nieograniczonym może być chronione przez uwierzytelnianie na podstawie plików cookie, ale pamiętaj, że źródło danych jest podatne na ataki XSRF. Użyj trybu nieograniczonego, jeśli wizualizacje na stronach internetowych spoza domeny źródła danych wymagają dostępu do źródła danych lub jeśli dane są w domenie publicznej i dlatego nie muszą być chronione.

Żądanie wizualizacji może określać format odpowiedzi w formacie JSON, CSV lub HTML. Format odpowiedzi określa format, w którym źródło danych zwraca tabelę danych. Formaty CSV i HTML nie są podatne na ataki XSRF, więc dostęp do nich można uzyskać w innych domenach, nawet w trybie ograniczonego dostępu.

Aby określić tryb nieograniczony, zastąp isRestrictedAccessMode() w ten sposób:

  @Override
  protected boolean isRestrictedAccessMode() {
    return false;
  }

Dla uproszczenia wszystkie przykłady podane w bibliotece działają w trybie nieograniczonego dostępu.

Błędy i ostrzeżenia

Gdy nie jest możliwe lub pożądane jest zwracanie prawidłowej tabeli danych,biblioteka zwraca DataSourceException. Na przykład jeśli nie można uwierzytelnić użytkownika. Biblioteka zgłasza wyjątki, gdy błędy uniemożliwiają utworzenie tabeli danych. Wyjątki mogą występować w sytuacjach, które są unikalne dla Twojego źródła danych. Jeśli tak, utwórz własne typy wyjątków błędów, korzystając z klasy DataSourceException. Możesz też podać klasę DataSourceException bezpośrednio.

Klasa DataSourceException znajduje się w pakiecie base i przyjmuje następujące parametry:

  • ReasonType
    Ten parametr jest wymagany. Dostępne typy przyczyn są zdefiniowane w wyliczeniu ReasonType. Jeśli żaden z dostępnych typów przyczyn nie jest odpowiedni, możesz użyć Other lub Internal.
     
  • MessageToUser
    Ten parametr określa tekst komunikatu o błędzie. W większości przypadków jest wyświetlana użytkownikowi jako etykietka, więc ważne jest, aby nie podawać danych technicznych ani informacji poufnych.

Do obsługi błędów możesz użyć zestawu funkcji pomocniczych dostępnych w: datasource.DataSourceHelper. W takim przypadku wywołaj 2 funkcje o tej samej nazwie setErrorServletResponse, aby przyjąć DataSourceException i ustawić błąd w odpowiedzi apletu danych. Jedna z tych funkcji odbiera żądanie źródła danych, druga korzysta z HttpServlet request i jest używana w sytuacji, gdy nie można utworzyć DataSourceRequest. Przykładową implementację znajdziesz w artykule Definiowanie procesu i procesu zdarzeń.

Jeśli nie można zwrócić tabeli danych, biblioteka zwraca błąd. Jeśli można zwrócić tabelę danych, ale jest jakiś problem, biblioteka zgłasza ostrzeżenie wraz z tabelą danych. Biblioteka generuje na przykład ostrzeżenie w tych sytuacjach:

  • jeśli wizualizacja zapytania zawiera element LIMIT, którego wynikiem są niepełne dane.
  • jeśli wizualizacja przesyła zapytania w nieprawidłowy sposób formatowania w klauzuli FORMAT.

Aby dodać własne ostrzeżenie, utwórz instancję base.Warning i dodaj ją do tabeli danych za pomocą metody addWarning().

Rejestrowanie

Biblioteka korzysta z rejestracji w Dżakarcie. Wspólne logowanie w Dżakarcie można używać z większością popularnych systemów dzienników, których być może już używasz. Jeśli Twój system logowania jest niestandardowy, może być konieczne napisanie adaptera. Więcej informacji znajdziesz na stronie głównej logowania logówtypowej Jakarty.

Gdy zostanie podany wyjątek, do dziennika zostaną wysłane informacje. Sposób uzyskiwania dostępu do dziennika zależy od używanego systemu logowania.