我正在使用Spring Data Rest来公开一个仓库。我使用@PreAuthorize
和@PostFilter
来限制对REST端点的访问仅局限于管理员用户并过滤结果。
@PreAuthorize("hasRole('ROLE_ADMIN')")
@PostFilter("hasPermission(filterObject, 'read')
public interface SomeRepository extends CrudRepository<SomeEntity, Long> {
}
与此同时,我有另一个控制器不需要任何身份验证,但是使用了存储库。
@Controller
public class SomeController {
@Autowired
SomeRepository repository;
@RequestMapping(value = "/test")
public ResponseEntity test () {
// Do something
repository.findAll();
// Do something else
}
}
这不起作用是因为发送到 "/test" 的请求的用户不是管理员,因此它没有访问该存储库的权限。
我的问题是,在应用程序内部使用存储库时,是否可能仅向存储库的REST接口添加安全性而不是整个应用程序?
谢谢