2011-07-12 31 views
2

簡單問題:確保函數僅在我的應用程序中被調用的最佳方式是什麼?我只是想確保沒有人能夠輸入網址並運行它。控制對CakePHP中函數的訪問的最佳方式

我想過使用認證,但我真的不需要用戶名/密碼保護。然後我想到了私有/受保護的函數,但我讀過CakePHP沒有很好地處理它。如果我使用私人,作爲例子,我將無法從另一個控制器類調用受保護的功能。

我認爲必須有一個簡單的解決方案,但我想不出一個。

謝謝大家提前。 :)

+0

你能告訴我們你看的蛋糕有私人的問題/保護?我一直使用(與PHP 5),並從來沒有問題。它的作用就像下劃線前綴一樣。當你說你「無法從另一個控制器類調用受保護的函數」時,你是否在另一個控制器內實例化一個控制器?在這種情況下,您應該使用一個組件,如@pleasedontbelong和@ElGabbu建議的那樣。 – bfavaretto

回答

3

如果您有在不同的控制器中使用過的功能,最好是創建一個組件。

但是....如果你真的需要..如果你真的想..你可以通過在你的方法名稱的開頭添加下劃線設置的訪問:

class ProductsController extends AppController { 

    // a browser can "access" this method 
    function iHaveAView(){ 
    } 

    // this method is used only by controllers 
    function _cantTouchMe(){ 
    } 

好運

編輯:(終於找到有關這個DOC)

您還可以通過 改變p中的CakePHP的控制方法的可見性用下劃線重新混合控制器方法名稱。如果控制器 方法以下劃線爲前綴,則該方法將不會從網絡直接訪問,但可供內部使用 。

來源:Controller Conventions

+0

這就是我正在尋找的。你回答我的問題,甚至給我提示我做錯了什麼。非常感謝! :d – dccarmo

1

我認爲這很簡單不要把功能作爲控制器的行爲。創建一個組件並在需要時使用它。

這會讓您的功能對公衆不可用,但可在您的應用程序中使用。

您認爲如何?

+0

是的,這絕對是我一直在尋找的。謝謝! – dccarmo

相關問題