【发布时间】:2016-09-25 23:52:57
【问题描述】:
我正在寻找如何为PagingAndSortingRepository 接口实现@PostFilter 注释
我创建了我的自定义存储库类扩展
public interface PublishableEntityRepository<T, ID extends Serializable>
extends PagingAndSortingRepository<T, ID> {
@PostFilter("hasPermission(filterObject, 'read')")
Page<T> findAll(Pageable var1);
}
然后创建了一个自定义的PermissionEvaluator 类
public class AccessPermissionEvaluator implements PermissionEvaluator {
@Override
public boolean hasPermission(Authentication authentication, Object o, Object o1) {
boolean hasPermission = false;
if (authentication != null) {
User user = (User) authentication.getPrincipal();
if (((PublishableEntity) o).getStatus().equals(AccessStatus.PUBLISHED)) {
hasPermission = true;
}
}
return hasPermission;
}
@Override
public boolean hasPermission(Authentication authentication, Serializable serializable, String s, Object o) {
return false;
}
}
但是,IllegalArgumentException 被抛出:
RepositoryRestExceptionHandler - 过滤器目标必须是集合或数组类型,但第 0 页(共 0 页)包含 UNKNOWN 实例
我知道有问题的 filterObject 是一个 Page 类,那么如何过滤页面内容?
【问题讨论】:
标签: java spring-security spring-data-rest