我使用Laravel 5.8在启用了标准限制的情况下提供api:
'api' => [
'throttle:60,1',
'bindings',
],
我认识到此速率限制不适用于特定IP。相反,它就像在公共路线上进行“全局”限制一样。
我有什么忽略的地方吗?还是预期的行为?
如果可以预期的话-如何在路由中启用“每个IP”的速率限制?
答案 0 :(得分:2)
我认识到此速率限制不适用于特定IP。相反,它就像在公共路线上进行“全局”限制一样。
这是不正确的。
samples_avg = [[1, 12, 3], [15000, 4, 3], [1, 144, 45]]
def check(samples_avg):
filtered = []
maxval = [max(x) for x in zip(*samples_avg)]
maxlist = ([r >= (m/5) for row in samples_avg for r, m in zip(row, maxval)])
results =[[] for i in samples_avg]
for i in results:
filtered.append([x for x, y in zip(samples_avg[i], maxlist) if y == True])
print (np.where((filtered) is True))
仔细查看两个protected function resolveRequestSignature($request)
{
if ($user = $request->user()) {
return sha1($user->getAuthIdentifier());
}
if ($route = $request->route()) {
return sha1($route->getDomain().'|'.$request->ip());
}
throw new RuntimeException('Unable to generate the request signature. Route unavailable.');
}
语句。如果存在用户,则油门键基于其用户标识符。如果不存在用户,则标识符包括if
。来自不同IP地址的请求将进入不同的限制存储区。