Spring数据存储库的安全方法

问题描述 投票:0回答:1

我目前正在基于Spring Boot开发REST API服务器。借助Spring Data Rest,可以轻松地通过一个简单的存储库(@RepositoryRestResourceJpaRepositoryJpaSpecificationExecutor)来拥有10个实体。现在,我需要将安全控制与@PreAuthorize集成。

这里的问题是我应该使用哪种方法来限制GET / POST /等?

例如,如果我限制delete的许可,是否会对deleteByIddeleteInBatchdeleteAll产生类似的影响?我在文档中看到已导出的注释放在deleteByIddelete上,没有任何进一步说明,这使我感到困惑。

java spring-boot spring-security spring-data-rest spring-security-rest
1个回答
0
投票

例如,如果我限制删除的权限,是否会对deleteById,deleteInBatch,deleteAll产生类似的影响?

据我所知:不。在授权搜索的地方检查此示例代码,但删除严格限于管理员:

public interface RecordRepository<T extends Record> extends MongoRepository<T, String> {

    // paginated queries
    @RestResource(path = "names", rel = "name")
    public Page<T> findByName(@Param("name") String name, Pageable pageable);
    @RestResource(path = "types", rel = "types")
    public Page<T> findByTypeIn(@Param("type") List<String> types, Pageable pageable);

    // restrict delete operations to administrators only

    @PreAuthorize("hasRole('ADMIN')")
    @Override
    void deleteById(String id);

    @PreAuthorize("hasRole('ADMIN')")
    @Override
    void delete(T entity);

    @PreAuthorize("hasRole('ADMIN')")
    @Override
    void deleteAll(Iterable<? extends T> records);

    @PreAuthorize("hasRole('ADMIN')")
    @Override
    void deleteAll();
}
© www.soinside.com 2019 - 2024. All rights reserved.