Q
認證後執行操作
1
A
回答
2
好吧,我不知道這是否是個好辦法,但它的工作..
我剛換了login_redirect_route到控制器動作來執行一些有用的東西,然後重定向到用戶個人資料。
順便說一下,觸發器工作完美@lluisaznar!
3
沒有定義驗證後觸發(至少在我使用ZfcUser版)。您可以在ZfcUser找到現有的觸發器\認證\適配器\ AdapterChain \ prepareForAuthentication()
public function prepareForAuthentication(Request $request)
{
$e = $this->getEvent()
->setRequest($request);
//THE PRE-AUTHENTICATION YOU USE
$this->getEventManager()->trigger('authenticate.pre', $e);
//THIS ONE LAUNCHES THE AUTHENTICATION. LOOK AT:
//ZfcUser\Authentication\Adapter\Db\authenticate()
$result = $this->getEventManager()->trigger('authenticate', $e, function($test) {
return ($test instanceof Response);
});
if ($result->stopped()) {
if($result->last() instanceof Response) {
return $result->last();
} else {
// throw new Exception('Auth event was stopped without a response.');
}
}
if ($e->getIdentity()) {
//THIS IS WHERE THE TRIGGER SHOULD BE PLACED
return true;
}
return false;
}
你可以重寫此類/法和放置觸發上述評論的地方。
1
過今天這種按倒一個,做了一個小寫了關於它的情況下,它有助於在未來的人:
http://circlical.com/blog/2013/7/5/capturing-auth-events-with-zfcuser
相關問題
- 1. 在Zend_Validate而不是控制器操作中執行認證認證?
- 2. 完成observable完成後要執行的操作後,如何執行操作?
- 3. 如何使用Jquery執行指定操作後的默認鏈接操作?
- 4. 確認後Django管理員操作未執行
- 5. 與默認操作,然後再繼續執行AJAX請求
- 6. Laravel 4資源默認存儲後執行操作
- 7. 執行操作
- 8. 執行操作
- 9. 執行操作
- 10. 已執行操作後的AngularJS表單驗證
- 11. 從OAuth捕獲訪問憑證後執行什麼操作
- 12. 默認表單操作後運行ajax?
- 13. 在Java中執行新操作後,代碼塊會執行什麼操作?
- 14. startActivity完成後執行某些操作
- 15. 篩選數據後執行操作
- 16. 顯示WizardPage後執行的操作
- 17. 在MKPointAnnotation上執行後端操作
- 18. 延遲後執行操作iPhone
- 19. java.lang.IllegalStateException:onSaveInstanceState後無法執行此操作
- 20. onRestoreInstanceState後執行片段操作
- 21. 數據渲染後執行操作
- 22. AsyncTask完成後執行操作
- 23. onSaveInstanceState |後無法執行操作AndroidPay
- 24. 意外操作在拖動後執行
- 25. 顯示錶單後執行操作。
- 26. 在設計註冊後執行操作
- 27. 按鈕釋放後執行操作
- 28. IntelliJ在後臺執行什麼操作?
- 29. 關閉窗口後執行操作
- 30. 在聲明語句後執行操作
謝謝您的回答。但我不明白:如何獲得ZfcUser \ Entity \ User,因爲有了這個新的觸發器,我只能從數據庫獲得ID,另外如果用戶登錄(hasIdentity()),我沒有任何狀態。也許一個觸發器必須在驗證功能中設置,但它仍然是一樣的... – 2013-04-05 12:02:06
這是真的。此功能只是驗證並將用戶密鑰放入存儲(會話)中。用戶實體生成的地方是'ZfcUser \ Authentication \ Storage \ read()',它在那裏執行'$ identity = $ this-> getMapper() - > findById($ identity)'。每次執行身份驗證時都會調用它,即在每個頁面請求中。在prepareForAuthentication()中,你還不能獲得實體。一種可能性是在你創建的觸發器之前自己做一個findById,並將實體傳遞給它。 – lluisaznar 2013-04-05 12:57:53
好吧,我不知道這是否是好方法,但它的工作..我剛剛已更改_login_redirect_route_控制器操作來執行一些有用的東西,然後重定向到用戶配置文件。順便說一下,觸發器是完美的工作! – 2013-04-06 11:22:20