2011-04-05 13 views
6

¿Cuál es la mejor forma de implementar ACL en CodeIgniter?CodeIgniter: mejor implementación para ACL

  • ¿Funciones basadas en la base de datos, grupos, necesidades del usuario?
  • Crear una biblioteca?

Esto es lo que estamos trabajando con:

los artículos, los autores

Hay dos tipos de autor:

  • autor Normal (sólo puede ver sus propios artículos).
  • Autor que también es administrador (puede ver todos los artículos y autoriza los artículos de otros autores).

Considerando que la funcionalidad se ampliará (más características que necesitarán restricción de permisos para los tipos de autores), ¿cuál es la mejor manera de hacer ACL en CodeIgniter?

+0

Puede consultar la página [THIS] (http://codeigniter.com/forums/viewthread/115032/) y [THIS] (http://codeigniter.com/forums/viewthread/129027/) y también intentar busque con "ACL" [AQUÍ] (http://codeigniter.com/forums/). – enam

+1

Puede leer la URL a continuación, que describe cómo añadir la biblioteca Zend ACL en una instalación CodeIgniter: [añadiendo-zend-acl-a-CodeIgniter] (http://www.lucdebrouwer.nl/adding-zend-acl- to-codeigniter) – appleboy

Respuesta

2

Deberá separar los controladores para cada tipo de permiso y tener un módulo que verifique la variable de sesión establecida cuando el usuario inicie sesión con el tipo de permiso permitido para ese controlador en particular.

// module User_model: 
function is_logged_in_admin() 
{ 
    $is_logged_in = $this->session->userdata('is_logged_in'); 
    $user_status = $this->session->userdata('user_type'); 
    if(!isset($is_logged_in) || $is_logged_in != true || $user_status != 'admin') 
    { 
    $this->session->sess_destroy(); 
    redirect('please_login/', 'refresh');   

    }  
} 

controlador, cargar el módulo y comprobar en la construcción:

function __construct() 
{ 
    parent::__construct(); 
    $this->load->model('User_model'); 
     $this->User_model-> is_logged_in_admin(); 

} 
+2

Eso sería solo para iniciar sesión, no ACL para componentes específicos de los controladores. – Hopstream

+0

también podría incluir is_logged_in_admin(); en cada función específica dentro del controlador. – tylerpenney

0

estoy en el proceso de escribir un sistema de autorización basado ACL que comprueba el permiso a nivel de URL. Se supone que es transparente y el sistema de autenticación independiente del agnóstico. Se implementa como un gancho constructor post controlador.

Lamentablemente no es terminado. pero puede verificarlo on github y bifurcarlo si desea terminarlo. atm solo funciona con ACL codificadas en un archivo de configuración, pero permite un origen de grupo/rol externo (aún no he escrito uno).

Cuestiones relacionadas