Php CodeIgniter 2.1.4中的用户角色和权限

Php CodeIgniter 2.1.4中的用户角色和权限,php,codeigniter,acl,Php,Codeigniter,Acl,我正在使用此版本的codeigniter 2.1.4,我想添加用户角色和权限。对于这个框架我是全新的,我在Zend中做过,但在codeigniter中找不到任何库。我也被钩子弄糊涂了 任何人都可以用外行的语言向我解释胡克的用途。并且还介绍了关于库的一个小例子,具有相同的版本,这样就很容易理解了 谢谢 使用,它是一个具有用户角色系统的身份验证库。应该更容易在代码中创建权限 这只是我的2美分,但挂钩在某种程度上类似于事件驱动的方法。这意味着它们将在代码中的特定时间触发。 在中,您可以看到CI已准备好

我正在使用此版本的codeigniter 2.1.4,我想添加用户角色和权限。对于这个框架我是全新的,我在Zend中做过,但在codeigniter中找不到任何库。我也被钩子弄糊涂了

任何人都可以用外行的语言向我解释胡克的用途。并且还介绍了关于库的一个小例子,具有相同的版本,这样就很容易理解了

谢谢

使用,它是一个具有用户角色系统的身份验证库。应该更容易在代码中创建权限

这只是我的2美分,但挂钩在某种程度上类似于事件驱动的方法。这意味着它们将在代码中的特定时间触发。 在中,您可以看到CI已准备好7个钩子。因此,您可以在这7个时刻注入您的任何脚本

假设您可以在hook
pre_controller
期间添加一个脚本,用于检查用户的浏览器语言,以便在所有控制器中您已经知道要使用的语言


请注意,ion_auth还支持挂钩。

既然您已经有了Zend ACL的经验,为什么不在CodeIgniter项目中使用它呢?()

只需在“MY_Controller.php”文件中设置角色、资源和权限,以便所有控制器都可以使用它们。出于同样的原因,在MY_Controller中设置您的用户(例如$this->theUser)

在Libraries文件夹中为资源设置“实现Zend_Acl_资源_接口”的类,并为用户设置“实现Zend_Acl_角色_接口”的“用户”类

在MY_Controller中设置ACL后,从数据库中检索用户的角色并将其添加到用户:

$roles = $this->theUser->getRoles(); // get the assigned role(s) for the user (array)
$acl->addRole($this->theUser, $roles); // then apply them to the user
完成后,我通常会在每个控制器的顶部放置以下内容:

if ( !$this->acl->isAllowed($this->theUser, 'article', 'modify') ) {
    redirect( '/home', 'refresh' ); // go back home
    exit;
}

不要忘记,如果对资源的权限需要一些逻辑,您甚至可以设置动态断言(即实现Zend_Acl_Assert_接口)。我通常将断言类放在它们相关的资源类之后。

CI 3.0应该很快就会出现,所以我暂时说现在不要在2.1.4中投入太多时间。钩子也是在内部CI工作的特定点运行代码的方法。即预控制器、后控制器。钩子不会编辑CI代码,而是将代码插入其中。我们可以将钩子与acl关联起来吗@Andrew Browni不知道ACL是什么Hanks Scotty我知道您试图说包含Zend ACL库。请你一步一步地给我解释一下好吗。我从未将任何库包含到任何框架中。这里你是说我可以包括Zend library.Correct。显示如何将Zend ACL集成到CodeIgniter中的链接要感谢Scotty,我得到了它:-)这些说明看起来有点旧,但仍然很好。顺便说一句,我没有在页面上显示的Zacl.php文件的第17行之后使用任何东西,因为我的角色、资源和权限没有那么复杂。我的用户表中只有一个带有逗号分隔角色的“角色”字段,然后使用PHP explode()为$acl->addRole()创建角色数组。顺便说一句,请投票赞成这个解决方案!指导我斯科蒂如何投票支持你的解决方案。。。不管怎样,你已经解决了我的问题。:-)