java / intermediate
Snippet
Absichern von Domänenoperationen mittels SpEL-Ausdrücken auf Methodenebene
Die `@PreAuthorize`-Annotation von Spring Security wertet Spring Expression Language (SpEL) vor dem Ausführen der annotierten Methode aus. Dies ermöglicht eine feingranulare Zugriffskontrolle, indem sowohl aktuelle Authentifizierungsdaten (`authentication.principal`) als auch Methodenparameter (`#document`) geprüft werden. So wird sichergestellt, dass Benutzer nur eigene Ressourcen bearbeiten können, sofern sie keine Administratorrechte besitzen.
snippet.java
java
1
2
3
4
5
6
7
8
@Servicepublic class DocumentService {@PreAuthorize("hasRole('ADMIN') or #document.ownerId == authentication.principal.id")public void archiveDocument(Document document) {document.setStatus(DocumentStatus.ARCHIVED);}}
spring
Erklärung
1
@PreAuthorize("hasRole('ADMIN') or #document.ownerId == authentication.principal.id")
Definiert eine vor der Methodenausführung geprüfte Zugriffsregel, die Zugriff gewährt, wenn der Benutzer Admin oder der Eigentümer des Dokuments ist.
2
public void archiveDocument(Document document) {
Deklariert die Business-Methode, die die Dokument-Entität entgegennimmt und die `#document`-Variable für den SpEL-Kontext verfügbar macht.