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…
Siguenos en: