Skip to content

Tag 26 Spring Security 3, Validation, Java Optionals

Alp387 edited this page Apr 14, 2023 · 3 revisions

Systemintegrationtests

Durch das Hinzufügen der Annotation @WithMockUser ist das Testen mit einem eingeloggten User wieder möglich.

Bildschirmfoto 2023-04-13 um 09 42 30

Wird ein anonymer User getestet, sieht der Test entsprechend so aus:

Bildschirmfoto 2023-04-13 um 09 44 41

Außerdem ist es wichtig den csrf Token mitzuschicken, sofern die Methode eine Veränderung hervorruft:

Bildschirmfoto 2023-04-13 um 09 47 17

Dies ist die Dependency, um @WithMockUser erfolgreich hinzuzufügen:

<dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> <scope>test</scope> </dependency>

Logout einrichten

Hierbei fehlt nun nur noch der Button im Frontend:

Bildschirmfoto 2023-04-13 um 09 54 00

Validation

Bildschirm­foto 2023-04-13 um 23 32 39

Damit keine leeren Felder, Tippfehler, falsche Eingaben oder sogar vorsätzlicher Blödsinn in Datenbanken gespeichert werden, können Benutzereingaben vom front- und/oder backend aus validiert werden. Auch können Benutzer zur Eingabe von erforderlichen Informationen gezwungen werden.

Es wird empfohlen Benutzereingaben so wohl auf dem frontend zu validieren, als auch auf dem backend. Wenn Eingaben nur auf dem frontend validiert werden, könnte man trotzdem unrichtige Daten beispielsweise über Postman ans backend schicken.

Frontend-Validierung

Heute wurden zwei Möglichkeiten zur frontend-Validierung vorgestellt:

  1. if Anweisung überprüft vor dem speichern und gibt eine Fehlermeldung, falls Eingabefeld leer ist oder nur ein Leerzeichen enthält.
image
  1. required-Zusatz im Eingabefeld
image

Selbstverständlich gibt es noch unzählige weitere Arten von frontend-Validierung. Hier einige von vielen Links: https://mui.com/material-ui/react-text-field/ https://mui.com/joy-ui/react-input/#validation https://react-hook-form.com

Backend-Validierung

Spring bietet eine Bibliothek für backend-Validierung. Dafür muss folgende Dependency in die pom.xml Datei eingefügt werden

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

Spring bietet Annotationen für Eigenschaften im Datenmodell

image

Neben vordefinierten Prüfungen wie @NotBlank und @Size gibt es noch viele weitere:

image image

Link: https://jakarta.ee/specifications/bean-validation/3.0/apidocs/jakarta/validation/constraints/package-summary.html

Zusätzlich müssen REST-Endpunkte in der Controller Klasse mit der Annotation @Valid beschriftet werden, damit überprüft wird. Falls die Benutzereingabe nicht den Anforderungen entspricht, wird ein Fehlercode 400 „Bad Request“ gesendet, ansonsten Status 200 „OK“.

Bildschirm­foto 2023-04-13 um 23 38 04

Es können noch weitere eigene Prüfungen definiert werden. Links zum Weiterlesen: https://www.baeldung.com/spring-boot-bean-validation

https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/validation.html

https://beanvalidation.org/1.0/spec/

Java Optionals

-in Bearbeitung-

Clone this wiki locally