Chr*_*hie 31
你也可以扔掉
org.springframework.security.access.AccessDeniedException("403 returned");
Run Code Online (Sandbox Code Playgroud)
这将在响应头中返回403.
yan*_*kee 27
创建一个使用@ResponseStatus注释的异常,例如:
@ResponseStatus(HttpStatus.FORBIDDEN)
public class ForbiddenException extends RuntimeException {
}
Run Code Online (Sandbox Code Playgroud)
现在只需在处理程序方法中抛出异常,响应将具有状态403.
Che*_*oft 12
匆匆
如果您使用的是纯JSP视图(最常见),那么只需添加即可
<% response.setStatus( 403 ); %>
Run Code Online (Sandbox Code Playgroud)
在视图文件中的某个位置.在顶部是一个不错的地方.
详情
在MVC中,我总是在视图中设置它,并且在大多数情况下使用Spring-MVC,使用它SimpleMappingExceptionResolver来呈现正确的视图以响应抛出的运行时异常.
例如:PermissionDeniedException在控制器或服务层中创建并抛出a ,并使异常解析器指向视图文件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>
Run Code Online (Sandbox Code Playgroud)
如果您需要实现用户登录机制,请查看Spring Security(以前称为Acegi Security).
Joe*_*dge 12
使用a ExceptionResolver是一种很好的方法,但是如果你只想让它与视图无关,你当然可以response.sendError(HttpServletResponse.SC_FORBIDDEN, "AdditionalInformationIfAvailable");在你的Controller中调用它.
小智 12
使用ResponseStatusException:
@GetMapping("/demo")
public String demo(){
if (forbidden){
throw new ResponseStatusException(HttpStatus.FORBIDDEN);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46536 次 |
| 最近记录: |