cakephp是在其他控制器操作中被授权检查的

时间:2012-03-05 02:39:16

标签: php cakephp permissions cakephp-1.3

假设我的控制器中有一个函数isAuthorized(),用于检查用户是否有权执行控制器操作addedit。现在让我们说我在控制器动作my_custom_action内。如何检查我的用户是否有权使用以下内容执行控制器操作add内的editmy_custom_action操作:

$this->Auth->isAuthorized();

谢谢

2 个答案:

答案 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;
        }
}