我正試圖編寫一些簡單的功能來區分管理員和我正在編寫的CakePHP應用程序中的常規用戶。我已將users
表更改爲admin
,即0
或1
。在CakePHP應用程序中授權管理員和常規用戶
在AppController.php
我有一個$components
陣列設置是這樣的:
public $components = array(
'Session',
'Auth' => array(
'authenticate' => array(
'Blowfish' => array(
'fields' => array('username' => 'email')
)
),
'loginRedirect' => array('controller' => 'pages', 'action' => 'home'),
'logoutRedirect' => array('controller' => 'pages', 'action' => 'home'),
'authorize' => array('Controller')
)
);
而且這種方法也:
public function isAuthorized($user) {
// Check if admin
if(isset($this->params['admin']) && $this->Auth->user('admin') == 1) {
echo "admin";
return true;
}
// Default deny
return false;
}
當我打開網頁我得到這個錯誤:(net::ERR_TOO_MANY_REDIRECTS): There were too many redirects.
。由於某些原因,上面的代碼導致無限重定向,我無法解決原因。
此外,我爲admin
設置了一個路由前綴,以便管理員可以訪問像/admin/users/edit
這樣的URL。當我去那個頁面時,我沒有得到無限的重定向,admin
是echo
'應該是。
我已經在線閱讀了教程並閱讀了Cake文檔,但它們似乎都以無限重定向結束,我如何設置它以便能夠區分管理員和普通用戶,並拒絕/允許訪問每個角色的某些操作?
你在使用$ this-> Auth-> allow();是否正確?要回答這個問題,請提供更多的代碼給你的beforefilters和路由規則 – Sixthpoint 2013-03-09 00:27:03