2013-02-04 62 views
0

當我嘗試在任何應用程序中調用「安全」組件時,我的網站的某些頁面崩潰。例如在AppController的文件,如果我改變了組件定義從CakePHP安全組件無法調用

var $components = array('Auth','Session','Email'); 

到我的網站上

var $components = array('Auth','Session','Email','Security'); 

頁依賴於其他網頁崩潰POST數據。我得到的只是一個空白的屏幕。 在\ cake \ libs \ controller \ components目錄中定義並存儲'security.php'。

任何想法是什麼導致這個或如何解決這個問題?

+0

嘗試移動「安全」到$組件陣列的開始? – Costa

回答

0

這就是SecurityComponent應該做的事情。

它通過向所有表單添加「標記」來檢查表單是否爲「有效」且未被篡改(例如,某人向javascript添加了額外的字段或值)。

還檢查張貼的形式從控制器和/或採取的措施允許這樣做(allowedControllers)

如果不符合要求起源,一個「blackHoleAction」被稱爲是停止進一步行動。

根據您的風險價值$組件的使用,而不是「公共$組件」,它認爲你正在運行CakePHP的1.3請參閱SecurityComponent這裏的文檔: http://book.cakephp.org/1.3/en/The-Manual/Core-Components/Security-Component.html

閱讀allowedControllers的一部分, allowedActions

也可能是由於禁用了調試,您的腳本中某處出現錯誤,這是不可見的。要啓用調試,請將您的core.php配置文件中的調試級別更改爲1或2;

應用程序/配置/ core.php中設置調試級別爲2,這條線:

Configure::write('debug', 2); 
+0

謝謝!我正在嘗試將一個頁面從http路由到https以進行SSL連接。頁面(操作)在訂單控制器中定義。所以下面http://book.cakephp.org/2.0/en/core-libraries/components/security-component.html我已經在$ components中添加了'Security',並且在beforeFilter()fxn 中添加了if(isset( $ this-> params ['order'])){ $ this-> Security-> blackHoleCallback ='forceSSL'; $ this-> Security-> requireSecure(); } and this function function forceSSL(){this - > redirect('https://'。env('SERVER_NAME')。$ this-> here); } btw版本是2.9 –

+0

這樣做仍然會使'訂單'控制器中定義的頁面/動作崩潰,並且不會被重定向到https://。我錯過了什麼? –

+0

我不確定你應該使用'$ this-> params',它可能需要'$ this-> request-> params'(可能是文檔中的錯誤)。在所有情況下,如果您啓用調試,它是否會給出任何錯誤?另外,你有沒有試過把一個簡單的'死(「helloworld」);'在forceSSL()方法內部檢查它是否到達那裏?在beforeFilter()開始時調試請求'debug($ this-> request);'也可以提供一些線索 – thaJeztah