我有关于Spring的问题。
我的应用程序中有一些存储库(扩展JpaRepository
),我在客户端(JavaFx)中使用它来传输数据。
在每个存储库中,我都有一个@PreAuthorize("hasAnyRole('ROLE')")
标记,阻止客户端在没有身份验证的情况下调用这些方法。
直到这里,一切都很完美,但我有一个设计问题。现在我应该调用一些在任务中的DB上运行的方法到我的服务器中。 我无法调用存储库的方法,因为否则我有一个例外,因为服务器无法登录自己。
所以我读了一些关于存储库和Dao之间区别的东西,我想问唯一的方法是创建一个没有@PreAuthorize
标签的Dao。
我不太喜欢这个解决方案,因为这样与db交互的代码就是两个不同的地方。因此,如果您有CustomerRepository,那么您还必须拥有CustomerDao。
你有更好的主意吗?谢谢!
答案 0 :(得分:3)
为了从服务器调用存储库方法,您需要一个SecurityContext。
以下是如何创建它: