0

在这里,我开发了一个包含所有必需方法的应用程序,例如带有更多附加选项的添加/删除/查看,但现在我需要根据用户类型分隔页面。例如,用户只有读取权限,管理员拥有所有类型的访问权限。

我找到了一些解决方案,可以通过会话变量作为角色并授予对有限方法的访问权限,但问题是当我直接通过 URL 访问方法时,所有用户都可以轻松访问它,即使它是用户或管理员也是如此。

如何控制这种访问?

4

1 回答 1

0

示例控制器方法

public function add(){
    //only allow administrators
    if($this->session->userdata('user_type') != 'admin'){
         //do whatever you want here, redirect user to some place (login) or show an error
         $data['error'] = 'You do not have necessary permissions';
         $this->load->view('view-file', $data);
   }else{
        //ok so user is admin, now do the rest of the job
   }
}

上述方法,您必须在每个方法中手动检查。更好的方法是创建一个MY_Controller并在那里有共同的逻辑

class MY_Controller extends CI_Controller{
    public function adminCheck(){
        if($this->session->userdata('user_type') != 'admin'){
            $data['error'] = 'No permission';
            $this->load->view('view-file', $data);
            exit();
        }
    }
}

在您的普通控制器方法中,您可以调用该函数adminCheck()

于 2013-10-09T10:41:20.460 回答