2010-02-10 26 views
11

En mi controlador, realizo una verificación de permisos para ver si el usuario puede realizar ciertas acciones. Si no pueden, me gustaría devolver un 404.Spring MVC 3 - ¿Responde a la solicitud con un 404?

¿Cómo le digo a Spring que me devuelva un 404?

+5

Ver http://stackoverflow.com/questions/2066946/trigger-404-in-spring-mvc-controller – axtavt

+0

@axtavt La respuesta en esta página es lo que he usado. Gracias – Kyle

+2

Realmente deberías responder con un 403 .. –

Respuesta

21

Usted puede lanzar una excepción y manejarlo en un método de nivel de controlador:

@Controller 
public class MyController { 

    @ResponseStatus(NOT_FOUND) 
    @ExceptionHandler({UnauthorizedException.class}) 
    public void handle() { 
     // ... 
    } 
} 

Si cualquiera el método del controlador tira un UnauthorizedException., se invocará el método del controlador anterior para manejarlo y devolver un error 404.

+0

Manera realmente hábil de manejar esto. –

+2

En la versión más nueva de Spring, puede simplemente lanzar NoSuchRequestHandlingMethodException en su controlador Comenta aquí porque aún aparece en la primera página de google – autra

-3

Puede derivar su excepción de HttpException y la ruta 404 de código de constructor base:

public class MyNotFoundException : HttpException 
{ 
    public MyNotFoundException(string message, Exception inner) 
     : base(404, message, inner) 
    { 
    } 
} 
+0

Supongo que es Spring.NET - no hay clase 'HttpException' en Spring. – skaffman

+0

Esa sintaxis para llamar al constructor de la superclase también es C#. – jjmontes

+0

como extiende (:) también – Panthro

Cuestiones relacionadas