Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
de:modul:ffit:3-jahr:java:learningunits:lu06:a [2025/09/23 00:08] apeterde:modul:ffit:3-jahr:java:learningunits:lu06:a [2025/09/23 00:10] (aktuell) apeter
Zeile 1: Zeile 1:
-====== LU06a - Webtoken & Login ======+====== LU06a - Webtoken ======
  
 ==== Übersicht ==== ==== Übersicht ====
Zeile 16: Zeile 16:
  
 {{:de:modul:ffit:3-jahr:java:learningunits:lu06:graphic_jwt.png?800|}} {{:de:modul:ffit:3-jahr:java:learningunits:lu06:graphic_jwt.png?800|}}
- 
-==== Login ==== 
- 
-**Anforderung 6**: Ein Benutzer in der Datenbank soll sich via ''/auth/login'' anmelden können. 
- 
-Sie erhalten die JWT-Funktionalitäten mit dem Commit ''07b12a2''. Implementieren Sie eine POST-API, welche als JSON-Body die E-Mailadresse ("email") und das Klartextpasswort ("password") akzeptiert. 
- 
-Die Implementation könnte grob so aussehen: 
- 
-<code java> 
-var json = ctx.bodyValidator(Map.class) 
-    .check(m -> m.containsKey("email"), "email is required") 
-    .check(m -> m.containsKey("password"), "password is required") 
-    .get(); 
- 
-String inputEmail = (String) json.get("email"); 
-String inputPassword = (String) json.get("password"); 
- 
-... // TODO: find user in database with given email 
- 
-byte[] storedSalt = Base64.getDecoder().decode(user.getPasswordSalt()); 
-byte[] storedHash = Base64.getDecoder().decode(user.getPasswordHash()); 
- 
-if (PasswordHandler.verifyPassword(inputPassword, storedHash, storedSalt)) { 
-    String jwt = JwtHandler.createJwt(inputEmail, user.getId()); 
-    ctx.json(Map.of("token", jwt)); 
-    return; 
-} 
- 
-... 
- 
-// TODO: Use the same error message if the user is not found and if the password is wrong 
-ctx.status(401).json(Map.of("error", "Invalid email or password")); 
-</code> 
- 
-Mit Postman können Sie Ihre API testen. 
- 
-{{:de:modul:ffit:3-jahr:java:learningunits:lu06:postman_login_header.png?800|}} 
- 
-{{:de:modul:ffit:3-jahr:java:learningunits:lu06:postman_login_body.png?800|}} 
- 
-Analysieren Sie das zurückgelieferte JWT auf https://www.jwt.io/ 
- 
  • de/modul/ffit/3-jahr/java/learningunits/lu06/a.1758578883.txt.gz
  • Zuletzt geändert: 2025/09/23 00:08
  • von apeter