我使用全新的Codeigniter 3框架,但它似乎缺少任何基于角色的访问控制列表功能。我知道有一些图书馆用于此目的,但它们似乎对我的需求有些过分。
我使用 CAS进行授权,因此我们可以将其排除在外。在我看来,基本上有三种方法:
使用会话
使用挂钩
使用访问控制列表(ACL)库
我现在使用的更简单,超级基本的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');
}
}
我在每个控制器的每个方法中调用该函数。这有点不高效。什么是更好的方法呢?请记住,我的角色是一些非常基本的角色,因此复杂的库会有点过分。
感谢。