我希望我的控制器在用户缺少查看特定页面的权限时返回正确的HTTP响应代码。如何在Spring MVC中返回403 Forbidden?
22
A
回答
12
晨间
如果使用普通的JSP视图(如最常见的),那么只需添加
<% response.setStatus(403); %>
某处你的视图文件。顶部是一个不错的地方。
详细
在MVC中,我总是设置此视图,在大多数情况下与Spring-MVC,使用SimpleMappingExceptionResolver
提出正确的观点响应抛出运行时异常。
例如:在控制器或服务层中创建并投入PermissionDeniedException
,并让异常解析器指向视图文件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安全)。
5
你可以使用response.setStatus(403)吗?
12
使用ExceptionResolver
是一个很好的选择,但如果您只是希望这是一个独立于视图的环境,那么您肯定可以在Controller中拨打response.sendError(HttpServletResponse.SC_FORBIDDEN, "AdditionalInformationIfAvailable");
。
17
创建一个例外注释,例如@ResponseStatus例如像这样:
@ResponseStatus(HttpStatus.FORBIDDEN)
public class ForbiddenException extends RuntimeException {
}
现在只是把你的处理方法异常和响应将有状态403
19
您也可以只是把
org.springframework.security.access.AccessDeniedException("403 returned");
这在响应中返回一个403头。
相关问题
- 1. W3C验证返回403 Forbidden
- 2. Facebook Graph API返回403 Forbidden
- 3. Grails Spring Security Rest - 403 Forbidden
- 4. Office Graph TrendingAround总是返回403 Forbidden
- 5. POST方法总是返回403 Forbidden
- 6. C#Web API方法返回403 Forbidden
- 7. HTTP 403 Forbidden
- 8. Android - Retrofit2 - 403-Forbidden
- 9. Grails Spring Security REST获取403 Forbidden
- 10. Apache VirtualHost 403 Forbidden
- 11. IIS 7.5 - 403 Forbidden
- 12. Vagrant 403 Forbidden
- 13. Spring RestTemplate.postForEntry,返回403错误
- 14. JQuery AJAX 403 Forbidden
- 15. Nagios - Access Forbidden 403
- 16. Phonegap 403 Forbidden
- 17. 403 Forbidden vhost Ubuntu
- 18. JQuery的$ .post在同一个域上返回403 Forbidden
- 19. 不存在的文件/ URL返回403 Forbidden
- 20. aSmack muc.getMembers()Forbidden(403)OPENFIRE
- 21. 403 Forbidden On图片
- 22. Wampserver 3.0.6 64bit - 403 Forbidden
- 23. Google+ Domains API 403 Forbidden
- 24. Django/gunicorn/nginx:403 Forbidden
- 25. YouTube API V3 - 403 Forbidden
- 26. 为什么Pocket API总是返回403 Forbidden?
- 27. ImageProcessor/Windows Azure存储问题,返回403 Forbidden
- 28. Spring WebSocket返回一个无日志403
- 29. Laravel 5.4背包无法删除项目,返回“403 Forbidden”错误
- 30. Box Api:将用户组添加为协作者返回403 Forbidden
这对我有用。 – Jamesla 2013-07-02 02:36:53
@John所提供的链接可悲的是不再工作 – BBerry 2016-04-15 12:16:18
@BBerry谢谢你的提醒,它已被删除。 8年将做到这一点链接。 – 2016-04-15 12:49:38