【发布时间】:2016-04-12 00:00:29
【问题描述】:
我正在使用 Laravel 构建一个登录限制系统,我用它来将每个失败的登录保存在缓存数据库中。 (我使用 Redis)。
代码:
class FailedLogins
{
const NUM_FAILURES_TO_LOCK = 30,
TIME_RANGE = 10; // In minutes
public function add($email, $ip = null)
{
if (is_null($ip))
$ip = request()->ip();
$index = md5($email . $ip);
Cache::tags('failed.logins')->put($index, 1, self::TIME_RANGE);
}
public function hasTooMany()
{
$numFailedLogins = count(Cache::tags('failed.logins')->get());
return ($numFailedLogins >= self::NUM_FAILURES_TO_LOCK);
}
}
问题出在hasTooMany 方法上,我必须在get 方法上提供一个关键参数。我在这条线上试图做的是:Cache::tags('failed.logins')->get() 是获取所有带有failed.logins 标签的条目,这样我就可以计算出有多少。
嗯,那行不通,因为我做不到。那么你推荐我使用什么,以便我可以解决它?如果它是唯一的 Redis 解决方案,也可以。
【问题讨论】:
标签: php laravel caching redis laravel-5.1