CodeIgniter -- ACL 的最佳实现方式

7
什么是在CodeIgniter中实现ACL的最佳方法?
  • 基于数据库的角色、组、用户权限?
  • 创建一个库?
这里是我们正在使用的内容:
文章,作者
有两种类型的作者:
  • 普通作者(只能看到自己的文章)。
  • 也是管理员的作者(可以查看所有文章并批准其他作者的文章)。
考虑到功能将扩展(需要对作者类型进行权限限制的更多功能),在CodeIgniter中执行ACL的最佳方法是什么?

你可以查看这个这个页面,也可以在这里搜索“ACL”。 - enam
1
您可以阅读下面的URL,了解如何将Zend ACL库添加到CodeIgniter安装中:adding-zend-acl-to-codeigniter - appleboy
2个回答

3

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

// 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();

}

2
这只是针对登录而言,不是针对控制器特定组件的ACL。 - Hopstream
你也可以在控制器的每个特定函数中包含is_logged_in_admin();。 - tylerpenney

0

我正在编写基于ACL的授权系统,它可以在URL级别上检查权限。它应该是透明的,并且不依赖任何身份验证系统。它作为一个后置控制器构造函数挂钩实现。

不幸的是,它还没有完成。但如果你想完成它,你可以到github上查看它并fork它。目前它只能使用在配置文件中编码过的ACL,但它允许使用外部组/角色源(我还没有编写)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接