我已經對此進行了大量的挖掘,但是我一直無法弄清楚最好的方法是什麼。設置哪些頁面可以在CakePHP中訪問
我有一個員工管理系統,登錄的每個人都是「員工」,「主管」或「經理」。
目前,我顯示不同版本的頁面,取決於他們的排名。但是,如果手動輸入網址,普通「員工」仍然可以訪問他們不應該訪問的網頁。根據CakePHP的文檔,它說默認情況下所有頁面都受到限制,並且您必須授予每個頁面的訪問權限。但我沒有授予訪問權限,似乎所有頁面都可訪問。
頁面訪問的最佳方法是什麼? 謝謝!
編輯:這裏是AppController中的配置:
public $components = array(
'DebugKit.Toolbar',
'Session',
'Auth' => array(
'authenticate' => array(
'Form' => array(
'userModel' => 'Employee'
)
),
'loginAction' => array(
'controller' => 'employees',
'action' => 'login',
//'plugin' => 'users'
),
'loginRedirect' => array('controller' => 'employees', 'action' => 'dashboard'),
'logoutRedirect' => array('controller' => 'employees', 'action' => 'login'),
'authError' => 'You must be logged in to see that.'
)
);
再有就是它總是被設置爲返回假isAuthorized()方法:
public function isAuthorized($user = null) {
// Any registered user can access public functions
/*if (empty($this->request->params['admin'])) {
return true;
}*/
// Only admins can access admin functions
/*if (isset($this->request->params['admin'])) {
return (bool)($user['role'] === 'admin');
}*/
// Default deny
return false;
}
如何驗證的用戶?你使用Auth嗎? – SomeSillyName
是的,我在CakePHP 2中使用Auth。他們的系統角色或「等級」存儲在users表中。 –
你可以顯示你的Auth設置代碼嗎? – SomeSillyName