2012-07-16 80 views
2

我得到一個重定向循環錯誤,爲我的生活我無法弄清楚如何或爲何重定向循環。這裏是我的設置:CakePHP的2:驗證

路由器

Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home')); 

AppController的

class AppController extends Controller { 
    public $components = array(
     'DebugKit.Toolbar', 
     'Acl', 
     'Auth' => array(
      'authorize' => array('Actions' => array('actionPath' => 'controllers')), 
      'loginAction' => array('controller' => 'users', 'action' => 'login'), 
      'loginRedirect' => array('controller' => 'users', 'action' => 'index'), 
      'logoutRedirect' => array('controller' => 'pages', 'action' => 'display', 'home') 
     ), 
     'Session' 
    ); 
    var $helpers = array('Html', 'Form', 'Session'); 

    public function isAuthorized($user){ 
     return true; 
    } 

    function beforeFilter() { 
    } 
} 
+0

超級老問題,我知道,但是這是固定我的問題:'父:: beforeFilter();'。 – 2013-07-25 21:40:34

回答

2

這可能是因爲你沒有設置顯示()方法爲public。這就是爲什麼它可能會重定向到同一頁面,並且該網頁未經過身份驗證。

所以,你可以把你「display()方法」在頁面控制器公衆開放使用下面的代碼:

//Define following method in your controller PagesController.php 
function beforeFilter() 
{ 
     $this->Auth->allow('display'); 
} 

希望它會爲你工作。請問是否爲你工作。

+1

我的想法是,無需在AppController中爲Auth Component初始設置指定IsAuthroized()方法。您可以稍後嘗試使用它。 – 2012-07-16 04:52:04

+1

使用$ this-> Auth-> allow()來指定ANYONE可以查看哪些動作。 使用isAuthorized()來決定特定用戶是否可以訪問某個操作。 如果Auth->允許()設置爲允許訪問 '顯示',isAuthorized()將不會被調用顯示行動 - Auth->允許()覆蓋isAuthorized() – RichardAtHome 2012-07-16 15:45:02

+0

使用$這個 - > requestAction( )在視圖中可能包含其他控制器。確保他們有正確的權限。 – Tal 2014-06-05 10:08:55