De hecho el tuyo es un planteamiento muy similar. La única diferencia es que yo valido antes de llegar al documento que procesa, es decir nunca redirige al destino si no "valida", mientras que tú llegas al documento que procesa (el destino) y si no "valida" retrocedes hacia atrás. Pero para gustos...
Un saludo.