Search code examples
springspring-securityspring-el

Use complex expression with Spring EL (conditional & parenthesis)


I'm using spring-EL with spring security

Is it possible to make 'complex' conditional expressions with parentesis?

@PreAuthorize("( hasRole('ROLE_USER') and ( isOwnerDocumentUUID( #docUuids ) ) or hasRole('ROLE_ADMIN')  ")

throw an java.lang.IllegalArgumentException:

Failed to parse expression

but

@PreAuthorize("hasRole('ROLE_USER') and ( isOwnerDocumentUUID( #docUuids ) ")

is accepted.


Solution

  • You have one extra (, the following should work:

    @PreAuthorize("( hasRole('ROLE_USER') and isOwnerDocumentUUID( #docUuids ) ) or hasRole('ROLE_ADMIN')  ")