public class SecurityEvaluationContextExtension
extends org.springframework.data.repository.query.spi.EvaluationContextExtensionSupport
By defining this object as a Bean, Spring Security is exposed as SpEL expressions for creating Spring Data queries.
With Java based configuration, we can define the bean using the following:
For example, if you return a UserDetails that extends the following User object:
@Entity
public class User {
@GeneratedValue(strategy = GenerationType.AUTO)
@Id
private Long id;
...
}
And you have a Message object that looks like the following:
@Entity
public class Message {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToOne
private User to;
...
}
You can use the following Query annotation to search for only messages that are
to the current user:
@Repository
public interface SecurityMessageRepository extends MessageRepository {
@Query("select m from Message m where m.to.id = ?#{ principal?.id }")
List<Message> findAll();
}
This works because the principal in this instance is a User which has an id field on
it.| Constructor and Description |
|---|
SecurityEvaluationContextExtension()
Creates a new instance that uses the current
Authentication found on the
SecurityContextHolder. |
SecurityEvaluationContextExtension(org.springframework.security.core.Authentication authentication)
Creates a new instance that always uses the same
Authentication object. |
| Modifier and Type | Method and Description |
|---|---|
String |
getExtensionId() |
Object |
getRootObject() |
public SecurityEvaluationContextExtension()
Authentication found on the
SecurityContextHolder.public SecurityEvaluationContextExtension(org.springframework.security.core.Authentication authentication)
Authentication object.authentication - the Authentication to usepublic String getExtensionId()
public Object getRootObject()
getRootObject in interface org.springframework.data.repository.query.spi.EvaluationContextExtensiongetRootObject in class org.springframework.data.repository.query.spi.EvaluationContextExtensionSupport