我有一个在 Spring 3.0 上运行良好的项目。我现在已经转移到 Maven 来控制依赖关系并转移到 Spring 3.1.2 jar 和 Spring security 3.1.1 jar。
当我尝试访问包含使用安全标记库(例如)的 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" />
我在我的项目的包中找不到那个类,所以认为它可能只是我尝试的类的一个移动:
<beans:bean id="expressionHandler" class="org.springframework.security.web.access.expression.WebSecurityExpressionHandler" />
这给了我同样的错误。
我目前配置的 Spring-security 依赖项:spring-security-core-3.1.1 spring-security-taglibs-3.1.1 spring-security-acl-3.1.1 spring-security-config-3.1.1 spring-security -web-3.1.1
我是否错过了一个包含任何“use-expressions = true”需要的罐子?