Saltar al contenido

¿Cómo devuelvo un 403 Forbidden en Spring MVC?

Solución:

También puedes simplemente lanzar

org.springframework.security.access.AccessDeniedException("403 returned");

Esto devuelve un 403 en el encabezado de respuesta.

Cree una excepción anotada con @ResponseStatus, por ejemplo, así:

@ResponseStatus(HttpStatus.FORBIDDEN)
public class ForbiddenException extends RuntimeException {
}

Ahora simplemente arroje esa excepción en su método de controlador y la respuesta tendrá el estado 403.

Cosa hecha rápidamente

Si está utilizando vistas JSP simples (como es más común), simplemente agregue

<% response.setStatus( 403 ); %>

en algún lugar de su archivo de vista. En la cima hay un lindo lugar.

Detalle

En MVC, siempre establecería esto en la vista, y en la mayoría de los casos con Spring-MVC, usaría el SimpleMappingExceptionResolver para presentar la vista correcta en respuesta a una excepción de tiempo de ejecución lanzada.

Por ejemplo: crea y lanza un PermissionDeniedException en su controlador o capa de servicio y haga que el solucionador de excepciones apunte a un archivo de vista permissionDenied.jsp. Este archivo de vista establece el estado 403 y muestra al usuario un mensaje apropiado.

En su archivo XML de Spring Bean:

<bean id="exceptionResolver"
      class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
  <property name="exceptionMappings">
    <props>
      <prop key="PermissionDeniedException">          
        rescues/permissionDenied
      </prop>
      ... set other exception/view mappings as <prop>s here ...
    </props>
  </property>
  <property name="defaultErrorView" value="rescues/general" />
</bean>

<bean id="viewResolver"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
  <property name="prefix" value="/WEB-INF/views/" />
  <property name="suffix" value=".jsp" />
</bean>

Si necesita implementar un mecanismo de inicio de sesión de usuario, eche un vistazo a Spring Security (anteriormente Acegi Security).

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *