CakePHP: Problema con Autenticacion de usuarios

Publicado en 'Programación' por freex, 28 Ago 2013.





  1. freex

    freex Miembro nuevo

    Registro:
    26 Mar 2012
    Mensajes:
    47
    Likes:
    3




    El problema es que la funcion login() no reconoce ningun usuario de la DB , a continuacion el codigo:

    -la funcion login() del controlador Usuarios:

    public function login(){
    if($this->request->is("post")){
    if($this->Auth->login()){
    $this->redirect($this->Auth->redirectUrl());
    }else{
    $this->Session->setFlash("usuario y/o clave invalido");
    }
    }else{
    if($this->Auth->user()){
    $this->redirect($this->Auth->redirectUrl());
    }
    }

    -El hasheado del password, modelo Usuario:

    public function beforeSave($options = array()) {
    if(isset($this->data)){
    $this->data["Usuario"]["userpass"]= AuthComponent::password($this->data["Usuario"]["userpass"]);
    $this->data["Usuario"]["userpass_confir"]= AuthComponent::password($this->data["Usuario"]["userpass_confir"]);
    }
    return true;
    }
    -La vista de login():
    <?php echo $this->Session->flash("auth");?>
    <h2>Iniciar Sesion</h2>
    <?php echo $this->Form->create("Usuario");?>
    <table border="1">
    <tr>
    <td colspan="2"><?php echo $this->Form->input("username");?></td>
    </tr>
    <tr>
    <td colspan="2"><?php echo $this->Form->input("userpass", array("type"=> "password"));?></td>
    </tr>
    </table>
    <?php echo $this->Form->end("ingresar");?>
    <?php echo $this->Html->link("crear cuenta", "/usuarios/add/");?>

    Todo esto es muy basico y no llego a encontrar que es lo que anda mal?????????
     


  2. tenguman

    tenguman Miembro de plata

    Registro:
    15 Nov 2010
    Mensajes:
    3,142
    Likes:
    1,016
    a mi me paso lo mismo, te recomiendo que el nombre de tu tabla para las autentificaciones lo coloques todo en ingles, hize esto con la tabla de usuarios (la nombre Users) y funciono perfecto.

    Armaste las aros y las acos?
    Cada vez que crees una nueva función tienes que correr el bat para crear los nuevos permisos.
     
  3. freex

    freex Miembro nuevo

    Registro:
    26 Mar 2012
    Mensajes:
    47
    Likes:
    3
    Gracias man, claro por defecto el cake esta configurado para trabajar con una tabla llamada user y los campos por defecto username y password pero esto lo cambie, ahor avolviendo al problema ya lo solucione agregando estas lineas antes de autenticar:

    $this->Auth->authenticar= array(
    AuthComponent::ALL=> array(
    "userModel"=> "Usuarios",//cambiando la tabla Users por una personalizada
    "fields"=>array("username"=>"username", "password"=>"userpass")// cambiando los campos a autenticar
    ),
    "Form"
    )

    Antes lo estaba haciendo autenticando solo el Form por defecto, a que te refieres con crear nuevos permisos, lo estuve intentando hacer con el metodo isAutorize() pero nada no me reconoce la variable $user que por defecto trabaja con el metodo siAuthorize(), estaba pensando en cambiarla aver que pasa.
     
  4. tenguman

    tenguman Miembro de plata

    Registro:
    15 Nov 2010
    Mensajes:
    3,142
    Likes:
    1,016
    como te digo, yo tmb tuve el problema, indique mi tabla de usuarios como "Usuarios" con el modelo correspondiente "Usuario" configurando todo pero no podia realizar ni la autentificación ni la autorización, pero en una de esas cambie la tabla a su nombre original "Users" y el modelo a "User" y todo funciono correctamente, revisando en las fuentes del motor, vi que esos datos estaban en duro, a pesar que en el manual indican que son variables...

    para manejar los permisos a las paginas, que en realidad son las funciones de los controladores, necesitar crear primero la referencia a las funciones (aros) y luego crear los permisos a los grupos de usuarios (o perfiles) para dichas funciones (acos), puedes hacerlos manualmente, pero Cakephp tiene un bat para realizarlo rapidamente (ya que es una algo rutinario que se tiene que realizar cada vez que creas una acción) el bat es el Bake, que sirve para crear la estructura basica de tu proyecto rapidamente, solo usando las tablas de base de datos.
     
    Última edición: 30 Ago 2013