CakePHP: la contraseña de registro Muestra el valor hash con símbolos de contraseña (puntos) cuando el botón de registro hace clic

StackOverflow https://stackoverflow.com/questions/7319961

  •  27-10-2019
  •  | 
  •  

Pregunta

Estoy tratando de crear una página de registro de usuario basada en el libro de cocina CakePHP.

Cuando hago clic en el botón Registro, la contraseña muestra el valor hash con símbolo de contraseña (es decir, 40 puntos) y, dado que tengo validación en mi modelo de usuario, se muestra el mensaje de error (máximo de 8 caracteres). La página no se está redirigiendo a la página de inicio.

Incluso intenté eliminar la validación de contraseña, pero el valor de hash aún se muestra, es decir. 40 puntos.

¿Alguien puede decirme cómo puedo mantener la contraseña como es sin mostrar los valores de hash y redirigirla a la página de inicio cuando la contraseña y confirmar la contraseña coincide? Gracias.

El siguiente es mi código:

user.php

<?php
class User extends AppModel{
var $name='User';
var $validate=array(
        'username'=>array(
            'userRule1'=>array(
                'rule'=>'alphaNumeric',
                'required'=>true,
                'allowEmpty'=>false,
                'message'=>'Alphabets and numbers only'
                ),
            'userRule2'=>array(
                'rule'=>array('between',5,15),
                'message'=>'Between 5 to 15 characters'
                )
        ),
        'password'=>array(
                    'rule'=>'notEmpty',
                    'required'=>true,
                    'allowEmpty'=>false,
                    'message'=>'Password required!'
                    ),
        'password2'=>array(
            'rule'=>array('maxLength',8),
            'required'=>true,
            'allowEmpty'=>false,
            'message'=>'Maximum 8 characters long'
            )
    );

  }
 ?>

users_controller.php

 <?php
  class UsersController extends AppController{
var $name='Users';
var $components=array('Auth','Session');
var $helpers=array('Form','Html');

function beforeFilter(){
    $this->Auth->allow('register');
}

function index(){
}

function login(){
}

function logout(){
    $this->redirect($this->Auth->logout());
}

function register(){
    if (!empty($this->data)){
            //$this->Auth->password($this->data['User']['password2']) used to get what the hashed password would look like
        if ($this->data['User']['password']==$this->Auth->password($this->data['User']['password2'])){
            if ($this->User->save($this->data)){
                //send signup email containing password to the user
                $this->Auth->login($this->data); //automatically logs a user in after registration
                $this->redirect('/pages/home');
            }//end if ($this->User->save($this->data))
        }//end if ($this->data['User']['password']
        else{
            //$this->flash('Typed passwords did not match','users/register',5);
            $this->Session->setFlash('Typed passwords did not match');
        }
    }//if (!empty($this->data))
   }//end function register
  }//end class
  ?>

/Usuarios/Vista de registro

  <?php
echo $this->Form->create('User',array('action'=>'register'));
echo $this->Form->input('username');
echo $this->Form->input('password');
echo $this->Form->input('password2',array('label'=>'confirm password','type'=>'password'));
echo $this->Form->end('Register');
   ?>
¿Fue útil?

Solución

echo $this->Form->input('password',array('value'=>''));
echo $this->Form->input('password2',array('value'=>'','label'=>'confirm password','type'=>'password'));

El usuario necesita volver a escribir la contraseña. Así es como la mayoría de los sitios web lo hacen.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top