Mam projekt w Spring boot z MVC, security i Thymeleaf, gdzie można zarejestrować użytkownika. Nie wiem jak dobrze rozwiązać kwestę zabezpieczenia API, w ten sposób, że zalogowany użytkownik nie będzie mógł wyświetlić/usunąć zawartość innego użytkownika zgadując id wpisując sobie z palca url. np. do takiego url /user/{userName}/notebook/{articleId}/delete
Wiem, że nie jest to do końca poprawne API, ale jakoś wygodniej jest używać geta niż np. PUT (mogę zastosować ten sam formularz) w web app. Próbowałem stosować:
@PreAuthorize("#userName == authentication.name")
@GetMapping("/user/{userName}/notebook/{id}/delete")
Jednak i tak wymaga to sprawdzenie w serwisie lub repository czy dany nootebook należy do zalogowanego użytkownika. Gorzej wygląda to jak mamy taką hierarchię user → notebook → article. Czy istnieje jakiś prostszy sposób albo ja coś źle robię?
Omawiany projekt na githubie, jednak ciągle coś zmieniam więc może to trochę inaczej wyglądać. https://github.com/amiroslaw/languide