我希望我的控制器在用戶缺少查看特定頁面的權限時返回正確的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