sábado, 1 de junio de 2013

YII - Encriptar contraseñas

Por un tema de seguridad, practicamente todos buscamos que las contraseñas no se vean reflejas directamente en nuestra base de datos, es por eso que siempre se busca encriptarlas. En YII existe una manera bastante fácil de poder encriptar las contraseñas, y es simplemente agregando una sola línea a nuestro código. Para realizar esto, debemos irnos al controlador de donde queremos trabajar esto, aquí nos debemos fijar en 2 funciones que trabajan esto: actionCreate() que crea un nuevo registro actionUpdate() que modifica un registro Imaginemos que nuestro modelo se llama “Usuarios” (deben cambiar Usuarios por el nombre de su modelo), este fué creado con GII, y nos creará algo similar a esto:


public function actionCreate()
{
 $model=new Usuarios;

 // Uncomment the following line if AJAX validation is needed
 // $this->performAjaxValidation($model);

 if(isset($_POST['Usuarios']))
 {
  $model->attributes=$_POST['Usuarios'];
  if($model->save())
   $this->redirect(array('view','id'=>$model->idusuarios));
 }

 $this->render('create',array(
  'model'=>$model,
 ));
}

public function actionUpdate($id)
{
 $model=$this->loadModel($id);

 // Uncomment the following line if AJAX validation is needed
 // $this->performAjaxValidation($model);

 if(isset($_POST['Usuarios']))
 {
  $model->attributes=$_POST['Usuarios'];
  if($model->save())
   $this->redirect(array('view','id'=>$model->idusuarios ));
 }

 $this->render('update',array(
  'model'=>$model,
 ));
}

Simplemente lo que debemos hacer es agregar la línea $model->password=md5($model->password); quedando más o menos de la siguiente forma:


public function actionCreate()
{
 $model=new Usuarios;

 // Uncomment the following line if AJAX validation is needed
 // $this->performAjaxValidation($model);

 if(isset($_POST['Usuarios']))
 {
  $model->attributes=$_POST['Usuarios'];
  $model->password=md5($model->password); //Encriptar en MD5
  if($model->save())
   $this->redirect(array('view','id'=>$model->idusuarios));
 }

 $this->render('create',array(
  'model'=>$model,
 ));
}

public function actionUpdate($id)
{
 $model=$this->loadModel($id);

 // Uncomment the following line if AJAX validation is needed
 // $this->performAjaxValidation($model);

 if(isset($_POST['Usuarios']))
 {
  $model->attributes=$_POST['Usuarios'];
  $model->password=md5($model->password); //Encriptar en MD5
  if($model->save())
   $this->redirect(array('view','id'=>$model->idusuarios ));
 }

 $this->render('update',array(
  'model'=>$model,
 ));
}

0 comentarios:

Publicar un comentario