我在第一个http请求中为缓存添加了一个密钥x分钟,然后继续增加下一个请求。
问题我面对的是增量,缓存过期时间也会重置,我需要保留到期时间。我还以秒为单位显示到期时间。
以下是我的代码:
$key = $input['device_id'];
if(! $attempts = Cache::get($key))
{
Cache::put($key, 1, Carbon::now()->addMinutes(5));
}
else
{
Cache::increment($key);
}
答案 0 :(得分:1)
您可以扩展内置中间件ThrottlesRequests
并将其附加到您的登录路由:
class MyThrottleRequests extends \Illuminate\Routing\Middleware\ThrottlesRequests {
protected function resolveRequestSignature($input) {
return $input->device_id; //I think this is what you mean to use right?
}
}
然后,您可以在Kernel.php
protected $routeMiddleware = [
// Existing ones
'throttleDeviceId' => MyThrottleRequests::class
];
然后您可以在所需的路线上使用它:
\Route::any("/route/to/throttle",/* Route definition */)->middleware("throttle:<max requests>,<within time>");