복붙노트

[SPRING] Spring MVC에서 403 Forbidden을 반환하려면 어떻게해야합니까?

SPRING

Spring MVC에서 403 Forbidden을 반환하려면 어떻게해야합니까?

사용자가 특정 페이지를 볼 수있는 권한이 없으면 컨트롤러가 올바른 HTTP 응답 코드를 반환하도록합니다.

해결법

  1. ==============================

    1.급히 만든

    급히 만든

    일반 JSP보기를 사용하는 경우 (가장 일반적인 경우)

    <% response.setStatus( 403 ); %>
    

    보기 파일의 어딘가에 있습니다. 상단에는 좋은 장소가 있습니다.

    세부 묘사

    MVC에서는, 나는 항상 이것을 뷰에 설정하고 대부분의 경우 Spring-MVC를 사용하여 SimpleMappingExceptionResolver를 사용하여 throw 된 런타임 Exception에 대한 응답으로 올바른 뷰를 표시합니다.

    예를 들어, 컨트롤러 나 서비스 계층에 PermissionDeniedException을 생성하고 throw하고 예외 리졸버가 뷰 파일 permissionDenied.jsp를 가리 키도록합니다. 이보기 파일은 403 상태를 설정하고 사용자에게 적절한 메시지를 표시합니다.

    Spring bean XML 파일에서 :

    <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>
    

    사용자 로그인 메커니즘을 구현해야한다면 Spring Security (이전의 Acegi Security)를 살펴보십시오.

  2. ==============================

    2.당신은 또한 던질 수 있습니다.

    당신은 또한 던질 수 있습니다.

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

    그러면 응답 헤더에 403이 반환됩니다.

  3. ==============================

    3.@ResponseStatus로 주석 처리 된 예외 만들기 예 : 이렇게 :

    @ResponseStatus로 주석 처리 된 예외 만들기 예 : 이렇게 :

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

    이제 예외 처리기 메서드에서 예외를 throw하면 응답의 상태는 403이됩니다.

  4. ==============================

    4.ExceptionResolver를 사용하는 것은 좋은 방법이지만보기에 독립적이기를 원하면 확실히 response.sendError (HttpServletResponse.SC_FORBIDDEN, "AdditionalInformationIfAvailable")를 호출 할 수 있습니다. 귀하의 컨트롤러에.

    ExceptionResolver를 사용하는 것은 좋은 방법이지만보기에 독립적이기를 원하면 확실히 response.sendError (HttpServletResponse.SC_FORBIDDEN, "AdditionalInformationIfAvailable")를 호출 할 수 있습니다. 귀하의 컨트롤러에.

  5. ==============================

    5.response.setStatus (403)를 사용할 수 있습니까?

    response.setStatus (403)를 사용할 수 있습니까?

  6. from https://stackoverflow.com/questions/45546/how-do-i-return-a-403-forbidden-in-spring-mvc by cc-by-sa and MIT license