2011-08-28 37 views
0

我試圖在新的CakePHP 1.3應用程序http://sandbox.andrewcroce.com上使用auth插件Spark插件。設置起來很容易,但出於某種原因,我在嘗試訪問除Users控制器以外的其他任何東西時遇到了重定向循環錯誤。CakePHP Spark Plug auth插件導致重定向循環

該插件成功允許您註冊並登錄,數據庫似乎寫入正確。發送確認電子郵件,驗證鏈接似乎激活新用戶。但是,我無法訪問任何頁面或控制器,而不是用戶控制器。結果是重複請求的http://sandbox.andrewcroce.com/errors/unauthorized重定向循環。

對我來說,這提出了兩個問題:如果我登錄成功,爲什麼它試圖指示我到未經授權的頁面?以及爲什麼它會繼續重定向到自己?

我不知道這是否是一個配置設置,我不理解火花塞配置,但沒有太多的解釋說明這些設置的作用。

任何幫助,將不勝感激。

回答

0

我不確定Spark Spark的具體細節,但是無論何時激活Auth組件,都需要確保指定允許未經過身份驗證的用戶執行哪些操作,否則任何對該操作的請求都將被重定向到無論你的錯誤行動是什麼。然後,如果你的錯誤行爲不被允許,它會拋出一個錯誤,發送給你...你猜錯了,你的錯誤行爲,一遍又一遍。

每個控制器裏面,你需要你的beforeFilter裏面的東西()方法是這樣的:

function beforeFilter() { 
    parent::beforeFilter(); 
    // Allow all actions 
    $this->allow(*); 
    // Only allow view and index 
    $this->allow('view', 'index'); 
} 

如果不運行allow()方法,你說,沒有任何行動應可未經過身份驗證的用戶。特別是,如果您將allow('unauthorized')放在ErrorsController類中,則unauthorized操作不會在循環中重定向。

0

spark_plug上有一個名爲「user_group_permissions」的表,例如如果你想訪問名爲「posts」的控制器和動作「sortBy」(http:// localhost/posts/sortby /),那麼你需要該權限添加到表是這樣的:

INSERT INTO `user_group_permissions` (`user_group_id`, `plugin`, `controller`, `action`, `allowed`) VALUES 
(3, '', 'posts', 'sortBy', 1) 

對於這個特定的情況下,user_group_id 3號是「客人」,換句話說,每個人都將能夠訪問控制器的行動