一、API安全机制-流控
API安全机制.png
@Slf4j
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/test")
public void test() {
log.info("测试请求- test");
}
}
/**
* 限流过滤器
*/
@Component
public class RateLimitFilter extends OncePerRequestFilter {
/**
* 限制1秒只能通过1个请求
*/
private RateLimiter rateLimiter = RateLimiter.create(1);
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
if (this.rateLimiter.tryAcquire()) {
filterChain.doFilter(request, response);
}
else {
// 限流
response.setStatus(HttpStatus.TOO_MANY_REQUESTS.value());
response.getWriter().write("Too Many Request !!!");
response.getWriter().flush();
return;
}
}
}
-
流控效果
请求次数太多.png
网友评论