[SPRING] Spring MVC에서 403 Forbidden을 반환하려면 어떻게해야합니까?
SPRINGSpring MVC에서 403 Forbidden을 반환하려면 어떻게해야합니까?
사용자가 특정 페이지를 볼 수있는 권한이 없으면 컨트롤러가 올바른 HTTP 응답 코드를 반환하도록합니다.
해결법
-
==============================
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.당신은 또한 던질 수 있습니다.
당신은 또한 던질 수 있습니다.
org.springframework.security.access.AccessDeniedException("403 returned");
그러면 응답 헤더에 403이 반환됩니다.
-
==============================
3.@ResponseStatus로 주석 처리 된 예외 만들기 예 : 이렇게 :
@ResponseStatus로 주석 처리 된 예외 만들기 예 : 이렇게 :
@ResponseStatus(HttpStatus.FORBIDDEN) public class ForbiddenException extends RuntimeException { }
이제 예외 처리기 메서드에서 예외를 throw하면 응답의 상태는 403이됩니다.
-
==============================
4.ExceptionResolver를 사용하는 것은 좋은 방법이지만보기에 독립적이기를 원하면 확실히 response.sendError (HttpServletResponse.SC_FORBIDDEN, "AdditionalInformationIfAvailable")를 호출 할 수 있습니다. 귀하의 컨트롤러에.
ExceptionResolver를 사용하는 것은 좋은 방법이지만보기에 독립적이기를 원하면 확실히 response.sendError (HttpServletResponse.SC_FORBIDDEN, "AdditionalInformationIfAvailable")를 호출 할 수 있습니다. 귀하의 컨트롤러에.
-
==============================
5.response.setStatus (403)를 사용할 수 있습니까?
response.setStatus (403)를 사용할 수 있습니까?
from https://stackoverflow.com/questions/45546/how-do-i-return-a-403-forbidden-in-spring-mvc by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] JavaConfig의 Spring Bean 별칭 (0) | 2019.05.08 |
---|---|
[SPRING] Spring Boot 405 POST 메소드가 지원되지 않습니까? (0) | 2019.05.08 |
[SPRING] bean으로부터 Spring shutdown을 강제하는 가장 좋은 방법은? (0) | 2019.05.08 |
[SPRING] Spring Security 경고 : 클래스 AuthorityUtils는 추상적입니까? (0) | 2019.05.08 |
[SPRING] 봄 Oauth2.0 누락 교부 유형 (0) | 2019.05.08 |