Ion Auth AYUDA!!!

1,027 views
Skip to first unread message

Eduardo Passarelli

unread,
Jan 19, 2011, 11:42:48 PM1/19/11
to codeignit...@googlegroups.com
Buenas, he leido en alguno de los hilos que varios desarrolladores han usado la libreria Ion_Auth para el manejo de usuarios y me gustaria que me den una idea de como se usa.
Ya mire la documentacion oficial pero no logro entender su uso.
Si yo pongo "http://midominio/auth" me carga el controller y muestra el form de login.
Si uno ingresa los datos correctos, inicia una session y nos deja editar, eliminar, etc uno o varios usuarios (osea que seria un backend de usuarios)

Ahora, si yo en realidad tengo mis paginas con un encabezado, debajo un $content a la izquierda y un $menuright a la derecha mas un pie..... como hago para que en esa columna de la derecha me aparezca el form de login a lo largo de todas las paginas.

La libreria esta cargada mediante autoload pero no se como se usa.
Gracias por las respuestas y algun ejemplito de ser posible.

Salu2

iMefisto

unread,
Jan 20, 2011, 5:00:53 AM1/20/11
to codeignit...@googlegroups.com
Hola. Yo también empecé a probar Ion_Auth así que lo que te comento según lo que estoy viendo:

No tengo un ejemplo con lo que necesitás, pero el formulario login de la librería no tiene mayores misterios. Si yo tuviese que incluir un login en la columna de la derecha, iría a esa vista (por ejemplo: menuright_view.php o como se llame) y le agregaría algo así:

<?php if (!$this->ion_auth->logged_in()): ?>

aca mostrar un formulario login dirigido a 'auth/login' con 2 campos, email y password.

<?php endif;?>

Si el usuario loguea correctamente te manda al home y si hay algún error, te manda al formulario login que trae la librería (podés modificar esa parte del controller, auth/login, para que la vista, además del formulario muestre tu cabecera y tus menúes).




--
---
Para anular la suscripción a este grupo, envía un mensaje a
codeigniter-spa...@googlegroups.com
Para obtener más opciones, visita este grupo en
http://groups.google.com/group/codeigniter-spanish?hl=es.

Eduardo Passarelli

unread,
Jan 20, 2011, 2:10:14 PM1/20/11
to codeignit...@googlegroups.com
Gracias, ire por ahi a ver como sale !!
Pero igual me doy cuenta de que sigo sin entender del todo lo que hago.

Si anda bien comento como lo hice, salu2

Eduardo Passarelli

unread,
Jan 22, 2011, 4:15:13 PM1/22/11
to codeignit...@googlegroups.com
Bueno, con la ayuda obtenida loque hacer que si no se inicio la session, entonces muestra el formulario.
Ahora bien, cuando intento loguerme me lleva a ion/auth mostrandome el formulario (osea no accedo a la session)
pero una vez que me logueo ahi, me lleva a la home y ya me aparece como que se inicio la session.

Pero no inicia session desde mi formulario.

josepzin

unread,
Jan 23, 2011, 3:53:24 PM1/23/11
to CodeIgniter-spanish
Yo estoy probando el dx_auth y parece que va bien

Eduardo Passarelli

unread,
Jan 23, 2011, 9:52:19 PM1/23/11
to codeignit...@googlegroups.com
Y alguien sabría decirme que diferencia hay de uno a otro?
Yo no tengo problemas en probar e investigar pero si alguien sabe que tiene mejor uno u otro seria mas fácil decidirse por cual usar.
Yo en principio estoy viendo este a ver que sale pero la verdad es que estoy un tanto perdido.
La verdad es que 10 días después de haber comenzado con CI, MVC y POO estoy un tanto frustrado en mis avances.
De la forma procedural tradicional y sin framework trabajo hoy 10 veces mas rápido y con mejores resultados.
Espero que al cabo de un tiempito esto se revierta.
Quedo a la espera de gente con experiencia en dx_auth vs Ion_Auth

Alejandro Ñañez Ortiz

unread,
Jan 23, 2011, 11:26:17 PM1/23/11
to codeignit...@googlegroups.com
Hola!

Ya leíste este artículo?

http://stackoverflow.com/questions/346980/what-code-igniter-authentication-library-is-best

Yo estoy utilizando TankAuth, bastante completa y con algunos cambios se puede agregar el control de roles de usuario.

--
---
Para anular la suscripción a este grupo, envía un mensaje a
codeigniter-spa...@googlegroups.com
Para obtener más opciones, visita este grupo en
http://groups.google.com/group/codeigniter-spanish?hl=es.



--
Alejandro Ñáñez Ortiz.
Ingeniero de sistemas.
Webmaster.
http://www.alejo.me/

Eduardo Passarelli

unread,
Jan 24, 2011, 3:52:12 PM1/24/11
to codeignit...@googlegroups.com
Hola, gracias por el link, lo estuve mirando.
De cualquier forma sigo adelante con ion_auth ya que tenia buenas referencias de el.

Lo que me pasa ahora es que ingreso correo y password y se loguea y redirecciona a la home

pero..... si ahora voy a otra seccion o bien clickeo el link de la home me vuelve a pedir que me loguee
es como si no guardara la SESSION


users_menu_view.php


<?php if (!$this->ion_auth->logged_in()): ?>
    <?php echo form_open("auth/login");?>
       
      <p>
          <label for="email">Correo electronico:</label>
          <?php echo form_input('email');?>
      </p>
     
      <p>
          <label for="password">Password:</label>
          <?php echo form_input('password');?>
      </p>
     
      <p>
          <label for="remember">Recordarme:</label>
          <?php echo form_checkbox('remember', '1', TRUE);?>
      </p>
     
      <p><?php echo form_submit('submit', 'Entrar');?></p>

     
    <?php echo form_close();?>

    <?php else: ?>

    <?php echo "<h5>Logueado</h5>"; ?>
    <?php echo "<ul class='menu'>"; ?>
    <?php echo "<li>Mis Datos</li>"; ?>
    <?php echo "<li>Mis avisos</li>"; ?>
    <?php echo "<li><a href='" . $this->ion_auth->logout() . "'>Salir</a></li>"; ?>
    <?php echo "</ul>"; ?>

    <?php endif;?>


esta es la funcion que verifica si estoy logueado. Que evidentemente anda porque despues de loguearse se redirecciona a la home y en ella se muestra la lista de opciones para el usuario logueado.
Pero cuando me muevo de la seccion se pierde el logueo parece.

parte de la libreria

    public function logged_in()
    {
        $identity = $this->ci->config->item('identity', 'ion_auth');

        return (bool) $this->ci->session->userdata($identity);
    }



A todo esto yo tengo un LAYOUT gral asi:

layout.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta name="Keywords" content="<?=$keywords ?>" />
    <meta name="Description" content="<?=$description?>" />
    <meta name="author" content="Passarelli Eduardo" />
    <meta name="copyright" content="2007" />
    <meta name="distribution" content="global" />
    <meta name="robots" content="all" />
    <meta name="rating" content="general" />
    <meta name="content-language" content="es-ar" />   
    <title><?=$title?></title>

    <link rel="stylesheet" href="<?=base_url()?>css/design.css" type="text/css" title="estilos" />
    <link rel="stylesheet" href="<?=base_url()?>css/nav-h.css" type="text/css" title="estilos" />

    <script type="text/javascript" src="<?=base_url()?>js/script.js"></script>
    </head>
   
    <body>
    <!-- Begin Wrapper -->
    <div id="wrapper">
   
      <!-- Begin Header -->
      <div id="header">
        <?php //$this->load->view('users_menu_view'); ?>
      </div>
      <!-- End Header -->
     
      <!-- Begin Navigation -->
      <div id="navigation">
        <?php $this->load->view('topmenu'); ?>
      </div>
      <!-- End Navigation -->
     
      <!-- Begin Contenido -->
      <div id="contenido">
               <!-- Begin Left Column -->
             <div id="content_izq">
            <?php $this->load->view($view); ?>
             </div>
         <!-- End Comtenido -->
         
         <!-- Begin Content Column -->
             <div id="rightcolumn">
            <?php $this->load->view('users_menu_view'); ?>
            </div>         
         <!-- End Content Column -->
           
           
      </div>
      <!-- End Contenido -->
     
      <!-- Begin Footer -->
      <div id="footer">
        <?php $this->load->view('footer'); ?>
      </div>
      <!-- End Footer -->
     
    </div>
    <!-- End Wrapper -->
   
    </body>
</html>


Mi controlador
 welcome.php

<?php

class Welcome extends Controller {

    function Welcome()
    {
        parent::Controller();   
    }
   
    function index()
    {
        $datos['title'] = "Inicio";
        $datos['keywords'] = "Palabras claves";
        $datos['description'] = "Palabras claves";
        $datos['view'] = "welcome_message";
        $this->load->view('layout', $datos);
    }
}

/* End of file welcome.php */
/* Location: ./system/application/controllers/welcome.php */

Mi controlador
avisos.php

<?php
/**
*
*/
class Avisos extends Controller
{
   
    function __construct()
    {
        parent::__construct();
        $this->load->model('avisos_model');
    }

    function index()
    {
        $datos['title'] = "Avisos";
        $datos['keywords'] = "Palabras claves";
        $datos['description'] = "Palabras claves";
        $datos['view'] = "avisos_view";
        $datos['filas'] = $this->avisos_model->obtener_todos();
        $this->load->view('layout', $datos);       
       
    }



Sugerencias? Alguna idea?
Quedo a la espera de ideas porque a mi se me acabaron.... gracias

Chispa28

unread,
Jan 25, 2011, 5:38:01 AM1/25/11
to CodeIgniter-spanish
sobre ion_auth vs dx_auth te digo que yo estaba usando dx_auth y estoy
probando auht, no puedo decirte como va por ahora porque empece el
domingo pero por lo que he visto es muuucho más simple a la hora de
implementar que dx y aparentemente tiene las mismas funciones. Casi me
decanto por tank pero luego me di cuenta que no tiene la parte de ACL
así que para tener que implementarla luego preferí probar ion que
parece más completo.
Sobre tu problema no puedo ayudarte por ahora porque soy más nuevo que
tu en esto.
Salu2
> Quedo a la espera de gente con experiencia en *dx_auth* vs* **Ion_Auth*

iMefisto

unread,
Jan 25, 2011, 5:49:57 AM1/25/11
to codeignit...@googlegroups.com
Pregunta para Eduardo:

En mi caso, utilicé la librería y me logueo correctamente. Luego si hago click en algún enlace del menú, la sesión se mantiene correctamente.
Si refresco la pantalla usando los controles del navegador ( o ctrl + R ) entonces sí pierdo la sesión.

Vos decís que si clickeas el link de la home te vuelve a pedir login. Podrías especificar si realmente estás haciendo click o probando links ingresándolos manualmente en la barra de direcciones? (me explico? tal vez tengamos problema parecido)


Otra cosa que quería agregar: en términos generales todas las librerías de autenticación andan. No vale la pena decidir entre ion o dx partiendo de si una funciona o no...ambas funcionan (alguno habrá renegado más con una que con otra).  Por mi parte iba a usar tank y luego decidi ion porque tenía incorporado lo de los grupos de usuarios, sólo eso.

josepzin

unread,
Jan 25, 2011, 9:15:37 AM1/25/11
to CodeIgniter-spanish
Alenjandro: muy interesante esa comparativa!!! Creo que probaré esa
TankAuth :)

On 24 ene, 05:26, Alejandro Ñañez Ortiz <alejona...@gmail.com> wrote:
> Hola!
>
> Ya leíste este artículo?
>
> http://stackoverflow.com/questions/346980/what-code-igniter-authentic...
>
> Yo estoy utilizando TankAuth, bastante completa y con algunos cambios se
> puede agregar el control de roles de usuario.
>
> El 23 de enero de 2011 21:52, Eduardo Passarelli
> <epassare...@gmail.com>escribió:
>
>
>
>
>
>
>
>
>
> > Y alguien sabría decirme que diferencia hay de uno a otro?
> > Yo no tengo problemas en probar e investigar pero si alguien sabe que tiene
> > mejor uno u otro seria mas fácil decidirse por cual usar.
> > Yo en principio estoy viendo este a ver que sale pero la verdad es que
> > estoy un tanto perdido.
> > La verdad es que 10 días después de haber comenzado con CI, MVC y POO estoy
> > un tanto frustrado en mis avances.
> > De la forma procedural tradicional y sin framework trabajo hoy 10 veces
> > mas rápido y con mejores resultados.
> > Espero que al cabo de un tiempito esto se revierta.
> > Quedo a la espera de gente con experiencia en *dx_auth* vs* **Ion_Auth*
>
> >  --
> > ---
> > Para anular la suscripción a este grupo, envía un mensaje a
> > codeigniter-spa...@googlegroups.com
> > Para obtener más opciones, visita este grupo en
> >http://groups.google.com/group/codeigniter-spanish?hl=es.
>
> --
> Alejandro Ñáñez Ortiz.
> *Ingeniero de sistemas.*
> *Webmaster*.
> *http://www.alejo.me/*

Eduardo Passarelli

unread,
Jan 25, 2011, 10:53:08 AM1/25/11
to codeignit...@googlegroups.com
iMefisto, a mi se me pierde la session ya sea clickeando un link del menu como escribiendo directamente la url.

En mi caso el problema no es Ion_Auth ni otra libreria, SOY YO que no entiendo nada jeje se me esta complicando bastante este salto que estoy pegando.

Hay dudas existenciales que tengo como las siguientes:

Que el autoload carge la libreria Ion_Auth, significa que ya habra un objeto instanciado y a su vez cargado todos los helpers, librerias y cosas que el usa en el constructor? O debo agregarlos yo tambien en el Autoload.

Este código estaria bien en la vista? O deberia cargar la vista y pasandole un arreglo con los datos de la session?

No se puede usar $_SESSION en CI ? xq vi que en realidad crea COOKIES

users_menu_view.php


<?php if (!$this->ion_auth->logged_in()): ?>
    <?php echo form_open("auth/login");?>
       
      <p>
          <label for="email">Correo electronico:</label>
          <?php echo form_input('email');?>
      </p>
     
      <p>
          <label for="password">Password:</
label>
          <?php echo form_input('password');?>
      </p>
     
      <p>
          <label for="remember">Recordarme:</label>
          <?php echo form_checkbox('remember', '1', TRUE);?>
      </p>
     
      <p><?php echo form_submit('submit', 'Entrar');?></p>

     
    <?php echo form_close();?>

    <?php else: ?>

    <?php echo "<h5>Logueado</h5>"; ?>
    <?php echo "<ul class='menu'>"; ?>
    <?php echo "<li>Mis Datos</li>"; ?>
    <?php echo "<li>Mis avisos</li>"; ?>
    <?php echo "<li><a href='" . $this->ion_auth->logout() . "'>Salir</a></li>"; ?>
    <?php echo "</ul>"; ?>

    <?php endif;?>

Bue, si me responden estas tengo un monton mas jajaja
gracias por su tiempo.

iMefisto

unread,
Jan 25, 2011, 11:41:41 AM1/25/11
to codeignit...@googlegroups.com
Vamos por partes:

El constructor de ion_auth carga las librerías que se usan (si querés podés incluirlas en el autoload en caso de utilizarlas en otro lado):

por las dudas incluyo el constructor de ion_auth:

class Auth extends Controller {

    function __construct()
    {
        parent::__construct();
        $this->load->library('ion_auth');
        $this->load->library('session'); //YO TAMBIEN TENGO ESTA EN EL AUTOLOAD
        $this->load->library('form_validation');
        $this->load->database();
        $this->load->helper('url'); //ESTE HELPER TAMBIEN ESTA EN EL AUTOLOAD
    }
...
}

Sobre la pérdida de tus sesiones, posiblemente tenga que ver con las cookies. En mi caso, configuré las sesiones para que se guarden en la base de datos (eso lo hice en el archivo config.php). 

Una prueba que podrías hacer es eliminar cookies, después iniciar sesión en tu sistema y ver si se crearon los archivos de cookies correctamente. En ese caso, después podrías ver qué pasa con esos archivos después de clickear algún link.

Sobre tu vista, yo no le paso nada relacionado con las sesiones. Directamente puedo usar: <?php if (!$this->ion_auth->logged_in()
): ?> tal como venía por default en la librería.

Suerte con las pruebas y seguí contando que seguro aprendemos algo.

No vi muchos ejemplos mostrando esta librería así que hay que basarse en el código descargado más lo que podamos compartir acá (q es mucho por cierto).

Saludos




--

Eduardo Passarelli

unread,
Jan 26, 2011, 1:01:35 PM1/26/11
to codeignit...@googlegroups.com
Gente sigo perdiendo la session al hacer click en algun link interno del sitio o escribiendo la url.

Donde se guardan las cookies como para ver que pasa?
Alguien me puede dar una mano con Ion_auth

thank

josepzin

unread,
Jan 26, 2011, 4:21:21 PM1/26/11
to CodeIgniter-spanish
Intenta con las sesiones con BD

Eduardo Passarelli

unread,
Jan 26, 2011, 4:46:23 PM1/26/11
to codeignit...@googlegroups.com
como? decis que trabaje con BDD para las sesiones en vez de cookies?

josepzin

unread,
Jan 27, 2011, 3:48:21 PM1/27/11
to CodeIgniter-spanish
Si, eso mismo. Activa en el config.php esto:
$config['sess_use_database'] = TRUE;

Y tienes que crear una tabla ci_sessions (busca en el wiki de CI)

Quizás con eso se arregle, y si no es eso, igual es aconsejable usar
este sistema con la BD

iMefisto

unread,
Jan 27, 2011, 4:02:25 PM1/27/11
to codeignit...@googlegroups.com
Por qué no es recomendable? (pregunto por curiosidad porque uso las sesiones de esa forma y quisiera saber)

Gracias.

josepzin

unread,
Jan 28, 2011, 9:04:33 AM1/28/11
to CodeIgniter-spanish
Porque CI no usa las sesiones de lado del servidor sino que almacena
toda la información en las cookies, esto tiene 2 problemas, uno es que
las cookies no permiten guardar mas que unos cuantos caracteres y otra
es que toda la información queda expuesta y almacenada en la cookie.

En cambio si usas la opción Base de datos, la cookie solo guarda una
referencia pero toda la información está en la tabla (igual, habría
que confirmar si esto es así, no estoy 100% seguro), y tienes
muchisimo mas espacio para variables o arrays.

On 27 ene, 22:02, iMefisto <imefi...@gmail.com> wrote:
> Por qué no es recomendable? (pregunto por curiosidad porque uso las sesiones
> de esa forma y quisiera saber)
>
> Gracias.
>

iMefisto

unread,
Jan 28, 2011, 9:13:08 AM1/28/11
to codeignit...@googlegroups.com
Ahh disculpas. Entendí que guardar sesiones en la bd NO era aconsejable (al revés de lo que expresaste). Sí, estamos de acuerdo. Conviene manejar las sesiones en la bd.

La información de la sesión está en la tabla. Te pongo un ejemplo de la info que se almacena:

Esto es una sesión en un sistema que usa ion_auth:

session_id: 6793d9bbff4258937027f7b1a5ff8d3c
ip_address: 127.0.0.1
user_agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2
last_activity: 1296223786
user_data: a:5:{s:5:"email";s:15:"ad...@admin.com";s:2:"id";s:1:"1";s:7:"user_id";s:1:"1";s:8:"group_id";s:1:"1";s:5:"group";s:5:"admin";}

josepzin

unread,
Jan 28, 2011, 3:45:52 PM1/28/11
to CodeIgniter-spanish
Que genio que soy explicando, me entendiste al revés jajajaj :D

On 28 ene, 15:13, iMefisto <imefi...@gmail.com> wrote:
> Ahh disculpas. Entendí que guardar sesiones en la bd NO era aconsejable (al
> revés de lo que expresaste). Sí, estamos de acuerdo. Conviene manejar las
> sesiones en la bd.
>
> La información de la sesión está en la tabla. Te pongo un ejemplo de la info
> que se almacena:
>
> Esto es una sesión en un sistema que usa ion_auth:
>
> session_id: 6793d9bbff4258937027f7b1a5ff8d3c
> ip_address: 127.0.0.1
> user_agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2
> last_activity: 1296223786
> user_data: a:5:{s:5:"email";s:15:"ad...@admin.com
> ";s:2:"id";s:1:"1";s:7:"user_id";s:1:"1";s:8:"group_id";s:1:"1";s:5:"group";s:5:"admin";}
>
Reply all
Reply to author
Forward
0 new messages