Laravel 5.5 ThrottleRequest中间件

时间:2017-10-13 01:53:20

标签: php laravel laravel-5.5

有没有人知道如何在Laravel 5.5中实现ThrottleRequest中间件?

我不清楚decayMinutes参数的含义:https://laravel.com/api/5.5/Illuminate/Routing/Middleware/ThrottleRequests.html

我理解如何将它应用到路线上,我只是不确定会有什么可用的参数。

2 个答案:

答案 0 :(得分:6)

我理解decayMinutes作为保留时间。对于intance,如果您想尝试使用错误的密码登录,但如果他尝试11次,则用户将被阻止decayMinutes中指定的分钟数。如果您指定10分钟作为decayMinutes,则用户将被阻止10分钟

答案 1 :(得分:3)

decayMinutes - 您的限额内的时间将被计算在内。技术上限制是缓存中的TTL(生存时间)$decayMinutes * 60秒的值,每次命中都会递增。当TTL超过值时,将自动在缓存中销毁,新的命中计数将开始。

查看RateLimit::hit()代码。很清楚:

/**
 * Increment the counter for a given key for a given decay time.
 *
 * @param  string  $key
 * @param  float|int  $decayMinutes
 * @return int
 */
public function hit($key, $decayMinutes = 1)
{
    $this->cache->add(
        $key.':timer', $this->availableAt($decayMinutes * 60), $decayMinutes
    );
    $added = $this->cache->add($key, 0, $decayMinutes);
    $hits = (int) $this->cache->increment($key);
    if (! $added && $hits == 1) {
        $this->cache->put($key, 1, $decayMinutes);
    }
    return $hits;
}

如果您希望将某些活动限制为每5分钟10次点击,则decayMinutes必须为5次。