我已经对此进行了大量研究,但我无法弄清楚最好的方法是什么。
我有一个员工管理系统,其中登录的每个人都是“员工”、“主管”或“经理”。
目前,我会根据它们的排名来显示不同版本的页面。但是,如果他们手动输入 URL,普通的“员工”仍然可以访问他们不应该访问的页面。根据 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.'
)
);
然后是始终设置为返回 false 的 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;
}