2

我有一个使用 Spring-MVC 在 Spring 3.0 上成功运行的项目。我将其移至 Spring 3.1,同时将我的 jar 管理更改为 Maven,而不是手动下载/复制到 Ant 的 project/lib。

在加载日志中的第一个(登录)公共页面期间,我看到:信息:至少一个 JAR 已扫描 TLD,但不包含 TLD

这让我觉得我的 taglib URL 与适当的 taglib jar 不匹配。所以要么 URL 不正确,要么我没有合适的 jars。

在我的 JSP 顶部:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

我认为这是有问题的安全标签,如下页所示(登录后)我收到一个新错误:javax.servlet.ServletException: javax.servlet.jsp.JspException: java.io.IOException: No visible WebSecurityExpressionHandler可以在应用程序上下文中找到实例。必须至少有一个才能支持 JSP 'authorize' 标记中的表达式。

这对我来说是新的——当我使用 Spring 3.0 库运行应用程序时,我不必定义“WebSecurityExpressionHandler”,所以要么我缺少一个提供相关内容的 jar,要么在 Spring 3.0 中发生了一些变化 -> 3.1 我应该如何配置我的应用程序的安全性。

编辑:我发现它看起来应该在我的配置中扮演该角色:

`<bean id="expressionHandler" class="org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler" />`

在我 <http auto-config="true" use-expressions="true" .... >的 security-context.xml

4

1 回答 1

4

你至少应该有以下几个:

  • spring-security-config
  • spring-security-web
  • spring-security-taglibs

另外,您可以添加spring-security-core,但 Maven 应该将其解析为传递依赖项。

于 2012-07-18T10:09:13.177 回答