我有一个项目,其中我只需要为一个用户提供一个方法的同时请求访问权限。
对于例如用户1:已经向我的方法发送了6个同时请求,那么我的应用程序必须向他发送错误,即同时超出请求限制。
但同时系统不应阻止来自多个用户的同时请求
for example
user1 : sends 2 requests
user 2 sends : 4 requests
this should be accepted
这是我的样本控制器
@RequestMapping(value = "/sendRequest", method = RequestMethod.POST)
public @ResponseBody Response getSessionId(
@PathParam("username") String username,
@PathParam("password") String password) {
User user = checkAuth(username,password);
response = sendRequest.send; //I need to apply check on this call
}
是否可以以任何方式进行。
我知道我们可以限制同时请求的数量但我们可以限制不同用户的同时请求数量
答案 0 :(得分:0)
您可以保留会在每次调用sendRequest.send()
之前检查并增加的会话变量,并在调用后减少。
//pseudo
int simultaneousRequests = session.get("simultaneousRequests") == null ? 0 : (int)session.get("simultaneousRequests");
if (simultaneousRequests >= 5) {
throw SomeException();
}
session.put("simultaneousRequests", simultaneousRequests + 1);
response = sendRequest.send();
session.put("simultaneousRequests", simultaneousRequests - 1);
答案 1 :(得分:0)
我建议你使用j2ee filter添加过滤器来调用需要限制的API调用。但是,您需要发送唯一标识符以及每个HTTP请求(可能是HTTP标头),以识别每个用户使用此方法。