Ver Mensaje Individual
  #4 (permalink)  
Antiguo 25/05/2011, 08:55
Avatar de NUCKLEAR
NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 19 años
Puntos: 890
Respuesta: codeigniter login de usuario en el constructor

Cita:
Iniciado por miktrv Ver Mensaje
Hola buenas,

Estoy desarrollando el típico panel de administración, ( mi primer trabajo con codeigniter ), y quería saber cual es la mejor manera de comprobar si la sesión de usuario admin esta activa o no.. yo ahora estoy usando la típica comprobación

Código PHP:
if ($this->session->userdata('logged_in')) { 
En cada uno de los métodos de mis controladores.. pero me parece un poco engorroso... se puede hacer esta comprobación de otra manera? por ejemplo, en el constructor de cada clase?

Añado el siguiente código que acabo de encontrar:

Código PHP:
Ver original
  1. function checkSession()
  2. {
  3.     if (!$this->session->userdata('is_logged_in'))
  4.     {
  5.         //the session has expired!
  6.         $data['title'] = "Session expired";
  7.  
  8.         redirect('welcome', 'refresh');
  9.     }
  10. }

Código PHP:
Ver original
  1. $this->checkSession();

Así sería correcto?


Un saludo!

Hacerlo en una libreria o un helper te va a ahorar trabajo, pero no quita de hacerlo como lo estas haciendo. Ahora para que este disponible en todos tus metodos sin tener que repetir lo mismo, usa las funcionalidades de PHP5

Código PHP:
Ver original
  1. class tuController extends Controller{
  2.  
  3. public function __construct() {
  4.         parent::__construct();
  5.         // Check if the logged user
  6.         $this->access_library->check_logged_in();
  7.        }
  8.  
  9. function .....{
  10.  
  11. }
  12. }


En tu access_library haces las operaciones pertinentes en este caso: si el usuario no esta logueado y no se encuentra en la session, rediririgir al form de login.

Ejm:

Código PHP:
Ver original
  1. class Access_library
  2. {
  3.     // Constructor
  4.     public function __construct()
  5.     {
  6.         if (!isset($this->CI))
  7.         {
  8.             $this->CI =& get_instance();
  9.         }
  10.     }
  11.  
  12.     public function check_logged_in()
  13.     {
  14.         if ($this->CI->session->userdata('logged_in') != TRUE)
  15.         {
  16.             redirect('user/login', 'refresh');
  17.             exit();
  18.         }
  19.     }
  20.         }

Puse el codigo como referencia y segun recuerdo, no esta probado, pero la idea esta presente.-
__________________
Drupal Argentina