假设我的控制器中有一个函数isAuthorized()
,用于检查用户是否有权执行控制器操作add
和edit
。现在让我们说我在控制器动作my_custom_action
内。如何检查我的用户是否有权使用以下内容执行控制器操作add
内的edit
和my_custom_action
操作:
$this->Auth->isAuthorized();
谢谢
答案 0 :(得分:0)
在app_controller中我创建了这个(种类)函数。首先,我检查正在使用的控制器,然后检查控制器的操作。您也可以尝试查看这篇“Simple Model-Based Access Control”面包店文章。
function isAuthorized() {
switch($this->name) {
case 'Everyone': /* EveryoneController */
return true;
break;
case 'Banned': /* BannedController */
$this->Auth->authError = __('You do not have permission to ', true).$this->action.' '.strtolower($this->name);
return false;
break;
default:
switch($this->action) {
case 'index':
return true;
break;
case 'add':
case 'edit':
case 'delete':
if (/* permission check */) {
return true;
} else {
$this->Auth->authError = __('You do not have permission to ', true).$this->action.' '.strtolower($this->name);
return false;
}
break;
default:
return true;
break;
}
break;
}
}
答案 1 :(得分:0)
检查当前用户请求'my_custom_action'是否为管理员,如果是,则授予访问权限。
public function isAuthorized($user) {
if (in_array($this->action, array('my_custom_action'))) {
if ($this->Auth->user('is_admin'))
return true;
else
return false;
}
}