CodeIgniter 2.1.4中的用户角色和权限

时间:2014-03-20 05:07:33

标签: php codeigniter acl

我正在使用此版本的 codeigniter 2.1.4 ,我想添加用户角色和权限。我在 Zend 中完成了这个框架的全新工作,但我无法在codeigniter中找到任何库。我也对 Hooks 感到困惑。

任何人都会解释我用外行语言挂钩的目的是什么。还有关于具有相同版本的小示例的库,以便易于理解。

感谢。

2 个答案:

答案 0 :(得分:1)

使用Ion_Auth,它是一个具有用户角色系统的身份验证库。您可以更轻松地在代码中创建权限。

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

我们假设你可以在钩子pre_controller期间添加一个脚本来检查用户的浏览器语言,以便在所有控制器中你已经掌握了语言使用。

请注意,ion_auth还支持挂钩。

答案 1 :(得分:1)

由于您已经拥有Zend ACL的经验,为什么不在CodeIgniter项目中使用它? (Link

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

在Libraries文件夹中为您的资源设置类,以实现Zend_Acl_Resource_Interface"和"用户"您的用户的类"实现Zend_Acl_Role_Interface"。

在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_Interface)。我通常会在其相关资源类之后立即放置断言类。