2012-12-11 27 views
1

我構建了一個郵件解析器腳本,它將從郵箱 中獲取內容,並向WebPage後端(在Zend_Framework上)發送少量「更新」請求。如何在Zend外部請求上跳過身份驗證

這個想法是讓mailChecker.php文件獨立,並用Cron Job調用它。

所有的作品好,直到我嘗試調用更新網址:

file_get_content("http://mySite.com/update-item/id/1"); 

框架重定向我的請求,登錄表單...

什麼是最乾淨的方式解決這一問題? 我不會編輯太多的登錄功能

有沒有辦法跳過對特定請求的身份驗證檢查? (安全性是不是在這裏的一個大問題)

或者一個簡單的方法來爲我的獨立腳本創建一個會話之前我所說的更新: file_get_content(「http://mySite.com/easy-auth/admin /管理「);

尋找一個簡單/醜陋的解決方案,我不會編輯當前的身份驗證太多。

回答

1

爲什麼不像通常那樣在調用更新url之前進行身份驗證?如果存在簡單的基於會話的身份驗證,則可以通過傳遞登錄詳細信息並啓用cookie jar來限制登錄操作。然後再次捲曲以從更新腳本獲取數據。

另一種解決方案,如果沒有真正的安全需求,只需禁用來自本地主機的傳入請求的身份驗證檢查。

0

我知道你是一個快速和骯髒的解決方案後,但這是糟糕的設計。您的cron作業應運行更新項目操作運行的任何代碼(最好不要複製它)。向您自己的站點發出Web請求會減慢cron作業的速度,給您的服務器增加不必要的負載並導致與您現在遇到的問題完全相同的問題。

我建議將更新項邏輯移動到控制器調用的服務類中。然後,您可以從您的cron作業調用相同的方法。這樣更乾淨,更快速,並且更容易進行單元測試。

+0

爲true,但是在訪問後端控制器(同樣的問題)之前,cron作業需要進行身份驗證。 –

+0

IMO cron作業根本不應該訪問控制器類,所以他們不需要擔心認證。當我說移動項目更新項目邏輯到一個服務類我的意思只是這個邏輯 - 任何認證代碼將保留在控制器中。 –

+0

不,這是不可能的。 updateItem()涉及多個對象修改,驗證,觸發器和最終數據庫更新。 –