Autenticarse En Yii Utilizando Ajax

Saludos amigos y perdonen los inconvenientes

Estoy intentando realizar una autenticación en Yii utilizando un Ajax Request desde una forma externa (fuera de Yii)




<script type="text/javascript">


$('document').ready(function(){


	$('#form-login').submit(function(){

		console.log('sometido');

		

	  

    var $inputs = $('#form-login :input');


    

    var values = {};

    $inputs.each(function() {

        values[this.name] = $(this).val();

        

    });

    //alert(values['username']);

    var e = "e="+encodeURIComponent(values['username']);

	var p = "p=" +encodeURIComponent(values['passwd']);

	


	var url = "/index.php/site/getAuth";

	var params = e + "&" + p;

	

	

	$.ajax({

			type: "get",

	        dataType: "json",

	    	url: url,

	    	data: params,

	    	context: document.body,

	    	//processData: true,

		    crossDomain:true,

		    beforeSend: function(data){

		    	alert('Before Send');

		    	//alert(data);

		    	

		    },

		    success:function(data){

		    	alert('success');

		    	//alert(data);

		    },

		    error:function(data, textStatus){

		    	alert(data + " " + textStatus);

		    	//alert(data);

		    	/*$.each(data, function(key, val) {

		    		alert(key + " " + " " + val);

		    	});

		    	*/

		    },

		    complete:function(data){

		    	alert('complete');

		    	//alert(data);

		    },

		

		});


		

	});

	


});

</script>




Técnicamente recojo de la forma los valores de username y password y los paso a una funcion en el controlador la cual recoje los datos y los envia a otra función que es la autenticación en Yii.


public function actionGetAuth($e, $p){

		

		$model=new LoginForm;


		if($model->login($e, $p))

			{

				if(!Yii::App()->user->isGuest) {

					Yii::app()->user->setState('type','student');

					

					Yii::log('state ' . Yii::app()->user->tipo);

				}

				//$this->redirect(Yii::app()->user->returnUrl);

			}


		//$this->render('login',array('model'=>$model));


		return true;

	

	}

Pero estoy teniendo un problema en la llamada Ajax ya que estoy recibiendo mensaje de Error y no tengo la más mínima idea de lo que me falta para obtener un Success.

Como estoy realizando programación en un ambiente de prueba, todas las llamadas se estan haciendo bajo localhost en mi computadora. He probado la autenticación y la misma funciona correctamente fuera de esta llamada.

Bajo mi poca experiencia en programación entiendo que al hacer la llamada de Ajax, necesito crear la sesión de autenticación para poder acceder a Yii una vez realize la misma.

Gracias,

hola, que errores de javascript te muestra la consola de FIREBUG?

creaste el session_start() en la pagina php que ejecutara lo que deseas ?

Hola gracias por contestar,

Aqui te dejo una lista de lo sucesos:

  1. en Chrome me esta devolviendo -> Status Canceled

  2. No estoy usando session_start() porque pensaba que este codigo ya lo hacia -> Yii::app()->user->login($this->_identity,$duration);

  3. la consola de firebug no esta devolviendo errores ( por lo menos errores en codificación).

EDIT

añadi el session_start() y aunque el ajax devolvió error, obtuve que se activara la sessión en la página de Yii :-D. Solo necesito el success que en realidad no se si es porque estoy en mi computadora personal

EDIT 2 -

aaaaaaaahhhh funcionó una vez y ahora no funciona >_<

tienes configurada las sessiones en el protected/config/main.php ???

Aparentemente de alguna forma misteriosa borre el -> ; <- al activar la variable session_start(). No he logrado hacer que la llamada ajax devuelva Success pero al terminar la llamada con done, logro lo que necesito, pero entiendo que la forma correcta es buscar es Success.




   $.ajax({

                type: "get",

                dataType: "json",

                url: url,

                data: params,

                context: document.body,

                //processData: true,

                    crossDomain:true,

    }).done(function(){

     

     // codigo codigo

});



si ya todo funciona bien , no hay problemas , ya que te sirve .done al igual que .success…

y si falla la peticion ajax, pudieras usar…


.fail(function() {

    alert("ha ocurrido un error... intente mas tardes")

  });

saludos . . .