在Spring Boot中限制每t的请求

时间:2018-06-03 00:22:31

标签: java spring-boot

我正在春季启动时编写REST服务,我遇到了一个我无法解决的问题。谷歌搜索了几个小时,但大多数例子对我来说似乎太复杂了,因为我是Spring Boot的新手。

假设用户可以将对象保存到我的数据库中:

@RequestMapping(value = "/person", method = RequestMethod.GET)
public void saveName (@RequestParam String name){
    personRepository.save(new Person(name));
}

现在我一直试图找到一种方法,这样匿名用户每分钟只能输入有限数量的条目。

2 个答案:

答案 0 :(得分:1)

您需要使用Spring Security来解决此问题。您可以通过isAnonymous()注释检查用户是否是匿名用户,并限制它可以使用表来捕获尝试。因为你是Spring Boot的新手。刷新Spring Security会更好,因为它可以让你对它进行细粒度的控制。 如果您不想要Spring安全性,则应用相同的方法,使用表来捕获未经身​​份验证的用户尝试。此外,还有一个默认的会话ID,您可以使用它而不是通过获取IP地址的麻烦。

答案 1 :(得分:0)

即使客户端不是经过身份验证的用户,它仍然拥有自己的会话,因此您可以在会话中存储已添加的条目数。不要存储一个整数,但要收集一些时间,所以如果它们超过一分钟就可以删除旧的。