2014-06-16 82 views
0

定操作禁用驗證我有我的控制器下面的代碼片段:在同一個控制器

public function beforeFilter() { 
    $this->autoRender = false; 
    ... 
    $this->Auth->allow('email'); 
} 

public function email() { 
    ... 
    $this->show(); 
    ... 
} 

public function show() { 
    ... 
} 

show動作需要身份驗證,但是不email

email動作表示在我的hadoop作業完成時接受jobEndNotifier的通知,所以我無法在該頁面上進行身份驗證,因爲它將由hadoop訪問。 (https://hadoop.apache.org/docs/r1.2.1/api/org/apache/hadoop/mapred/JobEndNotifier.html

show作用主要產生及呈現的成品Hadoop的工作報告,並在我的工作完成後我想自動生成它們(它們緩存)系統,所以後來當用戶訪問該頁面,它將從緩存中加載,速度會更快。這就是我從email操作調用show操作的原因。

當然我可以訪問email動作,而不默認登錄,但是當我打電話show行動從email將我重定向到主頁上說你必須先登錄。

所以在短暫的:如果我從我的email操作調用show操作,我可以設置它是否需要身份驗證?由於頁面未呈現,因此只進行計算。

在此先感謝。

+0

你在問題的代碼得到什麼錯誤?從你描述的'show'中的代碼應該在一個模型中 - 這是由兩個控制器動作調用的。然而,它只會像描述的那樣工作,這可能意味着您正在查看錯誤並做出錯誤的假設。 '它會將我重定向到主頁,表示您必須先登錄。<< - 重定向是什麼?這不是驗證組件。 – AD7six

+0

是的,謝謝你指出這一點。我首先想到這是由於Auth Component的'自動'重定向,因爲'show'操作需要身份驗證,但不是,它是我通過檢查失敗的其他條件。現在它工作,謝謝。 – zdtorok

回答

-1

根據你的邏輯, $ this-> Auth-> allow('email'); 以電子郵件方式繞過身份驗證,

相同的方式,可以從電子郵件功能中設置爲旁路節目像

public function beforeFilter() { 
$this->autoRender = false; 
... 
$this->Auth->allow('email'); 
} 

public function email() { 
... 
$this->Auth->allow('show'); /* allow show here **/ 
$this->show(); 
... 
} 

public function show() { 
    ... 
} 
+1

你爲什麼認爲這會影響任何東西? – AD7six