2016-01-07 12 views
2

我正在構建使用Laravel的登錄限制系統,該系統用於將每個失敗的登錄名保存在緩存數據庫中。 (我使用Redis)。如何使用Laravel上的標籤獲取所有緩存條目

代碼:

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解決方案,那也不錯。

回答

0

你可以使用Redis的哈希值:

http://redis.io/commands/hset

但你不能設置在哈希鍵個別到期日,所以你必須手動刪除它們,或用它主鍵與小時,如: failed.logins:08並過期。

相關問題