我有一個具有spring安全性的web應用程序,默認情況下所有頁面都需要授權。在我的情況下,管理員可以在某些時候決定禁用某些頁面的安全性或完全禁用它。這怎麼能最好地實現?我正在考慮修改FilterChainProxy
,但是我不清楚究竟如何(getFilterChains()
返回一個不可修改的列表)?以編程方式禁用Spring Security
回答
子類DelgatingFilterProxy
和檢查標誌是否調用委託與否。
然後在您的web.xml中使用該代替用於springSecurityFilterChain
(假設您正在使用命名空間配置)的DelegatingFilterProxy
。例如:
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>com.foo.spring.MyDelegatingFilterProxy</filter-class>
</filter>
在你的DelegatingFilterProxy檢查標誌(例如,系統屬性),看看你是否應該委託與否。
class MyDelegatingFilterProxy extends DelegatingFilterProxy {
override def doFilter(request: ServletRequest, response: ServletResponse, chain: FilterChain) {
if (System.getProperty("skipSpringSecurity" != null) {
// Ignore the DelegatingProxyFilter delegate
chain.doFilter(request, response)
} else {
// Call the delegate
super.doFilter(request, response, chain)
}
}
}
您可以使用相同的技術來使用毯子通配符像<security:intercept-url pattern="/**" access="ROLE_USER" />
然後跳到呼籲下/有一套路徑的春季安全過濾器(靜態文件等)。
非常感謝,這就是我一直在尋找的東西,它的效果非常好! – kpentchev 2012-03-22 09:27:54
Spring Security如何配置?你可以選擇添加一個自定義permissionEvaluator來驗證你的條件?
看一看spring-security writing a custom PermissionEvaluator - how to inject a DAO service?
我有一些特定的選民和AuthenticationProvider的,但除此之外,它使用默認的Web應用程序配置'<安全:HTTP自動配置=「真」 \t \t認證經理-REF =「AuthenticationManager會」 \t \t訪問決策管理-ref = 「repositoryAccessDecisionManager」 \t \t存取遭拒頁= 「/存取遭拒」> \t \t \t \t <安全:截距-URL模式= 「/ **」 訪問= 「ROLE_USER」/> \t \t <安全:http-basic /> \t security:ht ' – kpentchev 2012-03-21 14:44:33
- 1. Spring Security 3以編程方式登錄
- 2. Spring Boot - 以編程方式禁用AutoConfiguration
- 3. 以編程方式訪問/檢查Spring Security分層角色
- 4. Spring Security:如何以編程方式清除「記住我」cookie?
- 5. 如何以編程方式測試Spring Security中URL的授權?
- 6. 以編程方式啓用和禁用某些@ RabbitListener的Spring?
- 7. 以編程方式在Spring Security中以過濾器登錄用戶
- 8. 如何在啓動時以編程方式禁用Spring @JmsListener
- 9. 在Spring Security上禁用Http方法
- 10. 以編程方式啓用/禁用Log4jLogger?
- 11. 如何以編程方式禁用SparkUI?
- 12. Android以編程方式禁用onScroll()
- 13. UIWebView以編程方式禁用縮放
- 14. 以編程方式禁用FirebaseMessagingService
- 15. 以編程方式禁用類別
- 16. 以編程方式禁用UIButton
- 17. 以編程方式禁用ipv4/ipv6
- 18. 以編程方式禁用Firefox擴展
- 19. 如何以編程方式禁用cookie
- 20. 以編程方式禁用AF?
- 21. 以編程方式禁用Alertview
- 22. 以編程方式禁用window.location.reload?
- 23. 以編程方式禁用UIButton
- 24. 以編程方式禁用按鈕
- 25. 以編程方式禁用ScollViewer滾動
- 26. 以編程方式禁用麥克風
- 27. 以編程方式禁用Outlook Addin
- 28. 以編程方式禁用gif動畫
- 29. Spring Security編程授權
- 30. 從spring-security.xml文件中禁用Spring Security
首先,您的配置看起來很不尋常,因爲* everything *似乎受到保護,包括登錄頁面(通常不是)。 您能解釋一下管理員可以禁用頁面安全的情況嗎?看起來不尋常和有趣的同時。 – 2012-03-21 15:52:36
那麼它使用http-basic,因此使用默認的瀏覽器驗證對話框。該應用程序是一種數據庫搜索/瀏覽/服務器,並且由於默認情況下所有內容都受到保護,因此管理員可能需要/決定公開它(例如,由於需要與應用程序通信但不支持身份驗證的第三方應用程序) 。 – kpentchev 2012-03-21 17:51:12