CodeIgniter通过会话的用户权限

时间:2013-02-28 22:01:27

标签: codeigniter session rights

所以我在CodeIgniter中创建了我的第一个项目,我想知道是否有一种有效的方法来强制用户根据他们所属的用户组进行限制。

此应用程序中有3个用户组(管理员,教师和学生),每个用户组都拥有自己的权限。实现这个的最佳方法是什么?

目前我只是将它放入会话变量并在几乎每一页上都读取它。有什么东西告诉我必须有一个更简单的方法吗?

提前致谢。

亲切的问候

格伦

3 个答案:

答案 0 :(得分:1)

在数据库表中使用组ID。并将其存储到会话中。并使用此组ID检查授权和身份验证。

答案 1 :(得分:0)

如果你将它放入你的控制器的构造函数中,它将在每个页面上被调用,但你不必在你使用的每个方法中调用它。

答案 2 :(得分:0)

用户表中的一个简单组ID对于你的应用程序来说就好了。然后你可以像鲶鱼说的那样做,并检查控制器构造函数或特定方法本身。

将来实现另一个表如“权限”或“角色”或“范围”将允许您在应用程序内创建精细的谷物权限。看看像oauth服务器(https://github.com/alexbilbie/CodeIgniter-OAuth-2.0-Server

这样的实现
function user_get($id)
{
    $this->load->library('oauth_resource_server');
    if ( ! $this->oauth_resource_server->has_scope(array('user.details', 'another.scope')))
    {
        // Error logic here - "access token does not have correct permission to user this API method"
    }

    // API code here
}

当您需要实际微调权限或在创建RESTful API时需要更灵活的权限时,这可能更适用。对于您当前的情况,构造函数或方法中的泛型检查将会执行。