Laravel 5.2缓存增量问题,包含到期时间

时间:2017-05-23 12:49:59

标签: php caching laravel-5.2

我在第一个http请求中为缓存添加了一个密钥x分钟,然后继续增加下一个请求。

问题我面对的是增量,缓存过期时间也会重置,我需要保留到期时间。我还以秒为单位显示到期时间。

以下是我的代码:

$key = $input['device_id'];
if(! $attempts = Cache::get($key))
{
   Cache::put($key, 1, Carbon::now()->addMinutes(5));
}
else
{
  Cache::increment($key);
}

1 个答案:

答案 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>");