0 Tage Serie
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
@Service
public 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.