Java 如何在ServletAPI(SpringMVC)中限制每个用户的请求
如何允许每个用户仅对具有特定URLJava 如何在ServletAPI(SpringMVC)中限制每个用户的请求,java,spring,spring-mvc,servlet-filters,Java,Spring,Spring Mvc,Servlet Filters,如何允许每个用户仅对具有特定URL@PathVariable的micorservice方法发出一个请求。 我的控制器 @RestController @RequestMapping(value = "/rest/product", produces = "application/json;charset=UTF-8") public class ProductRestController { @Autowired ProductService productService;
@PathVariable
的micorservice方法发出一个请求。
我的控制器
@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);
}
@RestController
@RequestMapping(value=“/rest/product”,products=“应用程序/json;字符集=UTF-8”)
公共类ProductRestController{
@自动连线
产品服务产品服务;
@自动连线
产品ASM产品ASM;
@RequestMapping(value=“/ID/{ID}”,method=RequestMethod.GET)
公共响应属性getProductID(@PathVariable(“ID”)长ID,@AuthenticationPrincipal User){
Product Product=productService.getProduct(ID);
如果(产品==null)
返回新的ResponseEntity(未找到HttpStatus.NOT_);
返回新的响应属性(productAsm.toResource(product),HttpStatus.OK);
}
例如:
/rest/product/ID/2231
(使用login=“xaxa”)/rest/product/ID/2545
允许用户(使用login=“xaxa”)/rest/product/ID/2231
(使用login=“xaxa”)实现此功能的最佳方法是什么?(我必须将此URL请求与用户登录保持在DB中,或者已有解决方案)您可以使用AOP并实现自己的方面,该方面将在Rest端点方法之前调用 此切入点将读取请求中提供的ID,并尝试查找与此ID对应的锁。然后通常-尝试访问资源并可能等待 实现可以基于Guava的类——至少在一开始是这样 有几个问题需要考虑:
你需要支持多少个独特的ID?我有一些想法,但是它们的可用性取决于这个数字。还有,你认为一些IDS有吞吐量1的可能性吗?首先,有一些ID(大约100-500),但是将来它可以增加到5000个NO,我没有考虑这个可能性。