在这里,我开发了一个包含所有必需方法的应用程序,例如带有更多附加选项的添加/删除/查看,但现在我需要根据用户类型分隔页面。例如,用户只有读取权限,管理员拥有所有类型的访问权限。
我找到了一些解决方案,可以通过会话变量作为角色并授予对有限方法的访问权限,但问题是当我直接通过 URL 访问方法时,所有用户都可以轻松访问它,即使它是用户或管理员也是如此。
如何控制这种访问?
在这里,我开发了一个包含所有必需方法的应用程序,例如带有更多附加选项的添加/删除/查看,但现在我需要根据用户类型分隔页面。例如,用户只有读取权限,管理员拥有所有类型的访问权限。
我找到了一些解决方案,可以通过会话变量作为角色并授予对有限方法的访问权限,但问题是当我直接通过 URL 访问方法时,所有用户都可以轻松访问它,即使它是用户或管理员也是如此。
如何控制这种访问?
示例控制器方法
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()