문제

내 컨트롤러 반환하는 오른쪽 HTTP 응답 코드를 사용자가 부족할 권한을 특정 페이지입니다.

도움이 되었습니까?

해결책

사용하는 경우에는 일반 JSP 망(로는 것이 가장 일반적),단순히 추가

<% response.setStatus( 403 ); %>

어딘가에서 볼일이다.맨 위에는 좋은 장소입니다.

세부사항

MVC,나는 항상 설정에서 이 보고에서 대부분의 경우 봄-MVC,사용 SimpleMappingExceptionResolver 를 존재하는 올바른 뷰에서 응답을 던진 런타임 예외는 아니다.

예를 들어:를 만들고 throw PermissionDeniedException 컨트롤러에서 또는 서비스 계층과 예외를 해결점을 파일 보기 permissionDenied.jsp.이 보는 파일로 설정합 403 상태 및 표시 사용자는 적절한 메시지입니다.

에서 당신의 봄 콩 XML file:

<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 보안).

다른 팁

수도 있습을 그냥 버

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

이를 반환하 403 에서 응답 헤더가 있습니다.

예외를 만들로 주석 @ResponseStatus 예:다음과 같다:

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

지금 바로 던지는 예외에서 당신의 처리기법 및 응답이 있는 상태 403.

를 사용하는 ExceptionResolver 는 좋은 방법입니다,하지만 당신이 원하는 것을 볼 수-독립적이,당신은 확실히 전화 response.sendError(HttpServletResponse.SC_FORBIDDEN, "AdditionalInformationIfAvailable"); 에서 컨트롤러입니다.

이것을 사용:response.setStatus(403).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top