我有一个关于限制产品列表到我的应用程序中的特定用户的问题。我有一个API:“/api/v1/{userId}/products”,并且我想在我的UserRestController中使用分页,我已经在AdminRestController中使用了该分页:
@GetMapping
public Response<Page<Product>> getProductPage(@PageableDefault(sort = "id") Pageable pageable) {
return Response.ok(productService.findAll(pageable));
}
我已经阅读了一些线程,并找到了一些关于“@PreAuthorize(“#userId == authentication.principal.id“)"的解决方案。现在,我想在UserRestController中的端点中实现分页,它应该只返回与特定用户相关的产品列表(而不是所有产品的列表)。我已经尝试使用以下代码:
@GetMapping("/api/v1/{userId}/products")
@PreAuthorize("#userId == authentication.principal.id")
public Response<Page<Product>> getProductPage(@PageableDefault(sort = "id") Pageable pageable) {
SecurityContextHolder.getContext().getAuthentication().getPrincipal();
return Response.ok(productService.findAll(pageable));
}
但是我有访问问题,你能帮我弄清楚吗?
提前感谢!
1条答案
按热度按时间kokeuurv1#
它已经在
Spring-Secutiry
和Spring-Data
中实现。在config中,您需要添加一个@Bean,以便将您的
principal
提供给查询:在那之后,你就能写这样的东西了:
另外,请阅读官方文档:https://docs.spring.io/spring-security/reference/features/integrations/data.html