Buenas tardes a Todos, después de andar un poco ocupado hoy vuelvo a tener tiempo para seguir posteando, en esta ocasión vamos a tratar el tema de validación CSRF Token en Symfony 1.4 y Jquery, para más información sobre el tema consultar en el siguiente link:

 

http://es.wikipedia.org/wiki/Cross_Site_Request_Forgery.

 

Problemática
En symfony 1.4 el _csrf_token es reservado para el envió de formularios y para las peticiones link_to. Entonces, ¿si esto es reservado para estos ítems como poder usarlo desde Jquery en cualquier template de nuestros módulos ?

 

Solución
1. tenemos que crear un objeto a partir de la clase BaseForm, el ejemplo de esta solución está orientado a la eliminación de un registro de la DB.

 

[sourcecode language=»php»]

[/sourcecode]

2. Al tener ya creado el objeto $CsrfToken procedemos a asignar el valor del método getCSRFToken, el cual traerá el código del Token para realizar la petición.

[sourcecode language=»html»]

[/sourcecode]

5. En este punto solo nos queda agregar el código Jquery para ejecutar la eliminación teniendo en cuenta la validación Csrf Token.

[sourcecode language=»javascript»]

$(‘#sendToken’).live(‘click’,function(){

if($(‘input:radio[name=»listRows»]’).is(‘:checked’))//verificamos en se haya chequeado algún radio
{
var id    = $(‘input:radio[name=»listRows»]:checked’).val();//obtenemos el id del radio seleccionado
var token = $(‘#tokenCsrf’).val();//y el codigo del Token

$.ajax({
type: ‘POST’,//tipo de envio
url: ‘empleados/delete’,//url de envio
data: ‘id=’ + id + ‘&_csrf_token=’ + token,//definimos los datos a enviar

success: function(datos)
{
alert(‘Registro Eliminado’);//salida de informe siempre y cuando la petición se cumpla
}
});

}
else
{
alert(‘Debe seleccionar algún elemento de la lista’);//salida de error si no se a seleccionado ningun radio
}

});

[/sourcecode]

 

Espero que sea de gran utilidad, Gracias…