CodeIgniter——ACL的最佳实现


CodeIgniter -- Best implementation for ACL

在CodeIgniter中实现ACL的最佳方法是什么?

  • 基于数据库的角色、组、用户权限?
  • 创建库?

这是我们正在处理的:

的文章,作者

作者有两种类型:

  • 正常作者(只能看到自己的文章)。
  • 管理员作者(可以查看所有文章并批准其他作者的文章)。

考虑到功能将会扩展(更多的功能将需要对作者类型进行权限限制),在CodeIgniter中执行ACL的最佳方法是什么?

您需要为每种类型的权限分离控制器,并有一个模块来检查当用户登录时设置的会话变量,允许该特定控制器的权限类型。

// module User_model:
function is_logged_in_admin()
{
    $is_logged_in = $this->session->userdata('is_logged_in');
    $user_status = $this->session->userdata('user_type');
    if(!isset($is_logged_in) || $is_logged_in != true || $user_status != 'admin')
    {
    $this->session->sess_destroy();  
    redirect('please_login/', 'refresh');           
    }       
}

控制器,加载模块并检查构造:

    function __construct()
{
    parent::__construct();
    $this->load->model('User_model'); 
        $this->User_model-> is_logged_in_admin();
}

我正在编写一个基于ACL的授权系统,该系统在URL级别检查权限。它应该是透明的,并且与身份验证系统无关。它被实现为后控制器构造函数钩子。

遗憾的是它还没有完成。但如果你想完成它,你可以在github上查看它并分叉它。目前它只适用于在配置文件中编码的acl,但它允许外部组/角色源(我只是还没有写一个)。