Spring Security @PostFilter в сочетании с maxResults - PullRequest
3 голосов
/ 25 ноября 2011

Я использую Spring security для своих веб-сервисов.Я использую аннотации, чтобы указать условия безопасности.Прямо сейчас я сталкиваюсь со следующей проблемой.Рассмотрим следующий метод обслуживания:

@Override
@PostFilter("hasPermission(filterObject, 'read')")
@Transactional(readOnly = true)
public List<UserDTO> listUsers(int firstResult, int maxResults, String orderBy, boolean ascending) {

//Retrieve users and put them in a collection
}

Постфильтрация работает после вызова метода, но контракт метода заключается в том, чтобы возвращать коллекцию размера #maxResults, если существует хотя бы столько пользователей.Как мне этого добиться, потому что объекты могут быть отфильтрованы после того, как метод был вызван.Конечно, я мог бы вернуться к ручной проверке доступа внутри метода, но я подумал, что, возможно, будет более элегантный способ сделать это.

...