【发布时间】:2012-08-29 08:32:18
【问题描述】:
我是这个 codeigniter 的新手。我正在构建一个应用程序,其中用户角色扮演重要角色。在控制器中,我想检查用户是否具有特定的角色或权限,然后授予对功能的访问权限。我想知道我是否可以创建一个流程,这样我就不需要检查每个控制器的权限或角色,只有在扩展时才能做到这一点。我可以这样做吗?
/** 更新**/
如果我想为控制器中的每个方法或仅控制器中的某些方法设置权限,我该怎么做。
【问题讨论】:
标签: codeigniter
我是这个 codeigniter 的新手。我正在构建一个应用程序,其中用户角色扮演重要角色。在控制器中,我想检查用户是否具有特定的角色或权限,然后授予对功能的访问权限。我想知道我是否可以创建一个流程,这样我就不需要检查每个控制器的权限或角色,只有在扩展时才能做到这一点。我可以这样做吗?
/** 更新**/
如果我想为控制器中的每个方法或仅控制器中的某些方法设置权限,我该怎么做。
【问题讨论】:
标签: codeigniter
<?php
class Secure_area extends CI_Controller
{
function __construct($module_id=null)
{
parent::__construct();
$this->load->model('Employee');
if(!$this->Employee->is_logged_in())
{
redirect('login');
}
if(!$this->Employee->has_permission($module_id,$this->Employee->get_logged_in_employee_info()->person_id))
{
redirect('no_access/'.$module_id);
}
//load up global data
$logged_in_employee_info=$this->Employee->get_logged_in_employee_info();
$data['allowed_modules']=$this->Module->get_allowed_modules($logged_in_employee_info->person_id);
$data['user_info']=$logged_in_employee_info;
$this->load->vars($data);
}
}
?>
把你想做的每一件事都放在__construct....
【讨论】:
您好,我开发了一个系统,我遇到了同样的问题...以下是我的问题的解决方案
一张表,存储所有控制器的用户访问权限 例如 user1 mod1 0 用户 1 模式 2 1 用户1 mod3 1 . . 用户 2 模式 1 1 用户2 mod2 0 用户2 mod3 1
在检查 is_logged_in(){yes:has_permission(){yes:do things....continue, no:redirect(permission denied)} 的文件 (secure_area.php EXTENDS CI_Controller) 上创建,否:(重定向(登录))}
我所有的控制器都扩展了secure_area.php。
【讨论】: