我在这里获得有关应用程序中安全性实现的一些提示。
我的后端是CRUD。总而言之,那些CRUD终结点可用于2种用户(管理员和用户)。 管理员具有完全访问权限,而用户只能访问自己的资源。 (MongoDB中的每个资源都有userId引用)。
我尝试为每个存储库中的每个方法添加@Query,但是它不起作用:
@Query("{ 'id' : ?#{hasRole('ROLE_ADMIN') ? {} : principal?.id }}")
Page<User> findAllSecured(Pageable page);
实际上,我不确定它是否可以工作(因为无法请求所有对象),如果它可以工作,我希望有一个更高级的解决方案(避免对每个方法重复使用@Query。)。
您对通用解决方案有任何想法吗?