Grails: ¿hay alguna forma recomendada de lidiar con los ataques CSRF en formularios AJAX?

Estoy usando el patrón de token de sincronizador para formularios estándar (useToken = true) pero no puedo encontrar ningún método recomendado para tratar esto a través de AJAX.

EDITAR

Desde que publiqué esto, he desarrollado mi propia solución incorporando el patrón existente de Grails desde arriba.

En jQuery ajax publico el formulario completo (que incluirá los campos ocultos SYNCHRONIZER_TOKEN y SYNCHRONIZER_URI inyectados por Grails) de modo que el cierre withForm pueda funcionar como se espera en el controlador.

El problema es que, en una respuesta exitosa, no hay un nuevo conjunto de tokens (ya que la página no se vuelve a cargar y el g: form taglib no se evoca) y lo hago manualmente en el controlador que llama a la misma biblioteca que el g: form taglib, y devuélvelo en la respuesta ajax, y luego restablece el valor del campo oculto. Vea abajo:

var formData = jQuery("form[name=userform]").serializeArray();

$.ajax({
    type: 'POST',
    url: 'delete',
    data: formData,
    success: function (data) {
        // do stuff
    },
    complete: function (data) {
        // Reset the token on complete
        $("#SYNCHRONIZER_TOKEN").val(data.newToken);
    }
})

en el controlador:

def delete(String selectedCommonName) {

    def messages = [:]
    withForm {
        User user = User.findByName(name)

        if (user) {
            userService.delete(user)
            messages.info = message(code: 'user.deleted.text')

        } else {
            messages.error = message(code: 'user.notdeleted.text')
        }
    }.invalidToken {
            messages.error = message(code: 'no.duplicate.submissions')
    }
    // Set a new token for CSRF protection
    messages.newToken = SynchronizerTokensHolder.store(session).generateToken(params.SYNCHRONIZER_URI)
    render messages as JSON
}

¿Alguien puede identificar si, sin saberlo, he introducido una falla de seguridad en la solución anterior? A mí me parece adecuado, pero no me gusta rodar a mano nada que ver con la seguridad.

Respuestas a la pregunta(1)

Su respuesta a la pregunta