过滤JPA内置的Rest资源

时间:2019-06-26 09:59:03

标签: spring spring-boot spring-security spring-data-jpa spring-data

尝试公开存储库剩余资源。

我希望方法findAll()findById()是公开的(即使用户未连接也可以访问),而其余方法仅在经过身份验证的用户具有ROLE_ADMIN时才可以访问

@RepositoryRestResource
@PreAuthorize("hasRole('ROLE_ADMIN')")
public interface FilliereServices extends JpaRepository<Filliere, Integer> {

    @PreAuthorize("permitAll")
    public List<Filliere> findAll();

    @PreAuthorize("permitAll")
    public Optional<Filliere> findById(Integer id);
}

localhost:8080 / fillieres无法按预期访问,但是localhost:8080 / fillieres / search / findAll抛出

org.springframework.data.rest.webmvc.ResourceNotFoundException

我已经在@RestResource(path="findAll")上尝试过findAll(),但是同样的问题。 但是,如果我仅添加@Query("FROM Filliere"),它的作用就像是一种魅力。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果覆盖JpaRepository默认方法,则将覆盖默认REST端点的行为。这些方法将出现在search路径下。 尝试访问findAll()时使用localhost:8080/fillieres,调用localhost:8080 / fillieres / {id}时使用findById(Integer id)