CodeIgniter——ACL 的最佳实现

发布于 2024-10-31 04:26:54 字数 293 浏览 1 评论 0原文

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

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

以下是我们正在处理的内容:

文章、作者

有两种类型的作者:

  • 普通作者(只能看到自己的文章)。
  • 作者同时也是管理员(可以查看所有文章并批准其他作者的文章)。

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

What's the best way to implement ACL in CodeIgniter?

  • DB based roles, groups, user persmissions?
  • Create a library?

Here is what we're working with:

Articles, Authors

There are two types of author:

  • Normal author (can only see his own articles).
  • Author that is also an admin (can see all articles and approves other author's articles).

Considering the functionality will expand (more features that will need permission restriction for types of authors), what is the best way to do ACL in CodeIgniter?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半寸时光 2024-11-07 04:26:54

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

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

    }       
}

Controller ,加载模块并检查构造:

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

}

You will need to separate controllers for each type of permission, and have a module that checks the session variable set when the user logs in with the type of permission allowed for that particular controller.

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

    }       
}

Controller , load the module and check in the construct:

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

}
蹲在坟头点根烟 2024-11-07 04:26:54

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

遗憾的是它还没有完成。但您可以在 github 上查看它,如果您想完成它,也可以分叉它。 atm 它仅适用于配置文件中编码的 ACL,但它允许外部组/角色源(我刚刚还没有编写)。

I am in the process of writing an ACL based authorization system which checks permission on a URL level. It is supposed to be transparent and Authentication system agnostic. It is implemented as a post controller constructor hook.

Sadly its not finished. but you can check it out on github and fork it if you feel like finishing it. atm it only works with ACLs coded in a config file, but it allows for an external group/role source (i just havent written one yet).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文