【发布时间】:2015-11-27 13:09:33
【问题描述】:
如何只允许每个用户对具有特定 URL @PathVariable 的 microservice 方法的一个请求。
我的控制器
@RestController
@RequestMapping(value = "/rest/product", produces = "application/json;charset=UTF-8")
public class ProductRestController {
@Autowired
ProductService productService;
@Autowired
ProductAsm productAsm;
@RequestMapping(value = "/ID/{ID}", method = RequestMethod.GET)
public ResponseEntity<ProductResource> getProductID(@PathVariable("ID") Long ID, @AuthenticationPrincipal User) {
Product product = productService.getProduct(ID);
if (product == null)
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
return new ResponseEntity<>(productAsm.toResource(product), HttpStatus.OK);
}
例如:
- 第一个请求
/rest/product/ID/2231允许 USER(使用 login="xaxa" ) - 第二个请求
/rest/product/ID/2545允许 USER(使用 login="xaxa" ) - 第三个请求
/rest/product/ID/2231不允许 USER(使用 login="xaxa" )
实现此功能的最佳方式是什么?(我是否必须将此 URL 请求与用户登录数据库中的用户一起保留,或者已经有解决方案)
【问题讨论】:
-
您必须支持多少个唯一 ID?我有一些想法,但它们的可用性取决于这些数字。另外 - 您是否考虑过某些 ID 的吞吐量 1 的可能性?
-
一开始有几个id(100-500左右),以后可以增加到5000
-
不,我没有考虑过这种可能性!
标签: java spring spring-mvc servlet-filters