非常简单的codeigniter访问控制

时间:2015-06-11 06:53:15

标签: php codeigniter session acl cas

我使用全新的Codeigniter 3框架,但它似乎缺少任何基于角色的访问控制列表功能。我知道有一些图书馆用于此目的,但它们似乎对我的需求有些过分。

我使用 CAS进行授权,因此我们可以将其排除在外。在我看来,基本上有三种方法:

  1. 使用会话

  2. 使用挂钩

  3. 使用访问控制列表(ACL)库

  4. 我现在使用的更简单,超级基本的approch就是在我的主控制器中使用这样的Sessions:

    (...)
    public function index()
        {
    
            //Loading the CAS authentication library:
            $this->load->library('cas');
            $this->cas->force_auth();
            $user = $this->cas->user();
    
            //Seek for the user role in a database table
             $this->load->model("get_db");
             $role = $this->get_db->getPermissions($user->userlogin);
    
            //We save user information in the session
            $newData = array(
                'username' => $user->userlogin,
                'rol' => $role[0]->rol,
                'isLoggedIn' => TRUE
            );
            $this->session->set_userdata($newData);
    (...)
    

    然后我有一个检查用户是否登录的功能:

    public function is_loggedIn(){
            $check_login = $this->session->userdata('isLoggedIn');
    
            if($check_login === FALSE)
            {
            //redirect('user');
            }
        }
    

    我在每个控制器的每个方法中调用该函数。这有点不高效。什么是更好的方法呢?请记住,我的角色是一些非常基本的角色,因此复杂的库会有点过分。

    感谢。

0 个答案:

没有答案