我有一個和Spring 3.0一起工作的項目。我現在已經轉移到Maven來控制依賴關係,並轉移到Spring 3.1.2 jar和Spring security 3.1.1 jar。如何使用Spring安全性配置WebSecurityExpressionHandler?
當我試圖訪問包括使用安全標籤庫(EG)的JSP我得到的錯誤如下:
javax.servlet.ServletException: javax.servlet.jsp.JspException: java.io.IOException: No visible WebSecurityExpressionHandler instance could be found in the application context. There must be at least one in order to support expressions in JSP 'authorize' tags.
在我的安全上下文,我有:
<http auto-config="true" use-expressions="true" create-session="ifRequired"
從我的舊項目:
<beans:bean id="expressionHandler" class="org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler" />
我在我的項目包中找不到那個類,所以想着g它可能只是我嘗試過的班的一種舉動:
<beans:bean id="expressionHandler" class="org.springframework.security.web.access.expression.WebSecurityExpressionHandler" />
這給了我同樣的錯誤。
Spring的安全依賴我在此刻配置: 彈簧安全核心3.1.1 彈簧安全標籤庫-3.1.1 彈簧安全ACL-3.1.1 彈簧安全 - config-3.1.1 spring-security-web-3.1.1
我是否缺少一個包含任何'use-expressions = true'需要的jar?
因此,似乎WebSecurityExpressionHandler在Spring 3.1.1中已被刪除,這將解釋爲什麼我的應用程序無法找到實例。 https://jira.springsource.org/browse/SEC-1985 雖然現在我更加迷失了,因爲大概我需要替換那個功能,但是我不知道是什麼。 – DaFoot 2012-07-18 16:21:22
這個問題解決了嗎? – jbarrus 2012-07-26 15:29:07
它已被修復,但我不能告訴你如何/爲什麼。它在一系列變化之後停止抱怨。 我會在一分鐘內添加一個答案.... – DaFoot 2012-07-27 10:12:36