spring之JpaRepository 上的 @PreAuthorize

davidwang456 阅读:13 2024-02-27 23:08:18 评论:0

我希望为我的 REST 服务实现基于角色的安全性。我正在使用 spring-data-rest 并配置了一个 JpaRepository像这样:

@Repository 
@RestResource(path = "changesets", rel = "changesets") 
public interface ChangesetRepository extends JpaRepository<Changeset, Long> { } 

我想附上一个 @PreAuthorize对继承的注释 Page<T> findAll(Pageable pageable)方法,以便 GET 需要特定角色。

有没有办法做到这一点?我需要提供自定义实现还是我遗漏了一些明显的东西?

请您参考如下方法:

您可以为所有存储库添加自己的父类(请参阅 how to do it in the documentation )。然后只需添加所有必要的注释,您的安全限制将应用于所有子 bean。

从架构的角度来看,大多数时候存储库不是应用安全限制的正确位置。您的服务层是更合适的地方(因为您的安全限制取决于您的业务操作而不是您的数据加载逻辑)。考虑以下示例:您希望在许多服务中重用相同的 Repository,并且安全规则不相同(对于这些服务)。该怎么办?


标签:Spring
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号