Was ist der richtige Weg, um die @RequestBody
mit Spring Security zu sichern?Federsicherung @RequestBody
Zum Beispiel: Ein User
können mehrere Blog
s haben und jede Blog
können mehrere Entry
s haben. Ein Benutzer geht um einen Eintrag zu einem bestimmten Blog zu speichern und die Anforderung wie diese kommen in würde:
@RequestMapping(value="/api/entry", method=RequestMethod.POST)
@ResponseBody
public Entry save(@Valid @RequestBody Entry entry) {
this.entryService.save(entry);
return entry;
}
nun die eingehenden entry
ein Blog
hat, haben die Benutzer die Anforderung frisiert könnte und jemand anderes Blog gewählt, effektiv den Eintrag in ihrem Blog veröffentlichen. Obwohl ich dies in der Validierung (Abfrage der Persistenzschicht, um zu überprüfen, dass die Blog
gehört zu den angemeldeten User
) Ich denke, dass dies von Spring Security behandelt werden sollte. Wenn ja, wie gehe ich vor?
Siehe auch beiden Ansätze Nach dem Versuch, ich war sehr zufrieden mit '@ PreAuthorize'. Für irgendjemand anderen, der auf dieses Problem gestoßen ist, war die Sicherung der Anforderung für mich ziemlich komplex und ich konnte eine Bean mit einigen Diensten verbinden. Die EL ändert sich geringfügig, wenn eine Bean-Instanz aufgerufen wird. Beispiel: '@PreAuthorize (" @ decision.isOK (# entry.blog.id, principal) ")' –
Ich bin froh, dass es geholfen hat :) '@ PreAuthorize' ist genau für diesen Zweck, während @aspect allgemeiner ist:) – Elbek
Reference-Methode Parameter von einem Spring-EL in @ PreAuthorize sollte mit einem scharfen '' '' # '' '' vorangestellt werden. '' '' @ PreAuthorize ("Decision.isOK (#entry, #principal)") '' '' anstelle von '' '' @ PreAuthorize ("Decision.isOK (entry, principal)") '' ''. –