我目前正在基于Spring Boot开发REST API服务器。借助Spring Data Rest,可以轻松地通过一个简单的存储库(@RepositoryRestResource
加JpaRepository
和JpaSpecificationExecutor
)来拥有10个实体。现在,我需要将安全控制与@PreAuthorize
集成。
这里的问题是我应该使用哪种方法来限制GET / POST /等?
例如,如果我限制delete
的许可,是否会对deleteById
,deleteInBatch
,deleteAll
产生类似的影响?我在文档中看到已导出的注释放在deleteById
和delete
上,没有任何进一步说明,这使我感到困惑。
例如,如果我限制删除的权限,是否会对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();
}