2016-03-06 49 views
0

控制重複請求我想截取同樣的請求,所以我寫的標誌在會話如果一個請求來,例如是這樣的:在多爾康

在Security.php/beforeExecuteRoute

public function isActed($actkey) { 
      $log = $this->getDI()->get('log'); 
      $actq = $this->session->get($actkey); 
      $log->debug("magic show" . $actq); 

      if (!empty($actq)) { 
       $log->debug("isActed can not send agin!"); 
       return false; 
      } else { 
       $log->debug("isActed clean,it can go!"); 
       $this->session->set($actkey,true); 
       return true; 
      } 
     } 

ControllerBase.php/afterExecuteRoute

public function afterExecuteRoute() { 
     $controllername = strtolower($this->dispatcher->getControllerName()); 
     $actionanme = strtolower($this->dispatcher->getActionName()); 
     $cakey = $controllername . $actionanme; 
     $this->session->remove($cakey); 
    } 

但寫的會議需要實時,如果請求快速發送,它不會工作fine.For例如,在同一時間,只允許一人進入,當一個人進入時,門會很快關閉,然後人們走,然後打開......但它可能會在兩個或更多的人在同一時間,在關閉之前,另一個已經進來。

我希望有人給一些建議或其他方式來控制重複請求。 謝謝!

+0

我沒有得到。什麼是問題/問題? – m02ph3u5

+0

我很抱歉我的英語水平很差,問題已經重新編輯。謝謝你的回答。 –

+0

你想只同時授予一個用戶的訪問權限嗎?你可以鎖定一個文件並保持鎖定狀態,直到任何情況告訴你用戶已經離開。 – m02ph3u5

回答

0

有幾層你如何能夠實現這一點。首先從視圖層上的JavaScript開始。您可以禁用click事件中的按鈕。

當您完成這項工作後,我建議實施Phalcon支持的CSRF機制。一旦你顯示錶單,你就爲它添加一個生成的唯一標記。從用戶收到的令牌接收到的令牌應與您在會話中保存的令牌相匹配,並且應重新保存會話中保存的令牌。這種方式相同的HTML第二次不能發送數據,因爲令牌不匹配。