4

我无法解决这个问题,我的 XSD 版本高于 4,那么为什么仍然存在冲突?

我正在使用 Spring JAR,它们都具有 4 或更高版本,但仍然出现错误。

以下是 XSD spring-security.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:security="http://www.springframework.org/schema/security"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.1.xsd">
    <security:http auto-config="true">  <!-- ////this line holds error/////-->
        <security:intercept-url pattern="/"
            access="hasRole('ROLE_ADMIN')" />
        <security:form-login login-page="/login"
            default-target-url="/" authentication-failure-url="/loginerror" />
        <security:logout logout-success-url="/logout" />
        <security:csrf disabled="true" />
    </security:http>
    <security:authentication-manager>
        <security:authentication-provider>
            <security:user-service>
                <security:user name="admin" authorities="ROLE_ADMIN"
                    password="admin" />
            </security:user-service>
        </security:authentication-provider>
    </security:authentication-manager>
</beans> 

以下是错误:

在此行发现多个注释: - 配置问题:您不能将 spring-security-2.0.xsd 或 spring-security-3.0.xsd 模式与 Spring Security 3.1 一起使用。请将您的架构声明更新为 3.1 架构。违规资源:文件 [C:/Documents and Settings/Administrator/My Documents/Google Drive/spring_workspace/spring security_demo/WebContent/WEB-INF/security-context.xml] - 您不能使用 spring-security-2.0.xsd 或带有 Spring Security 3.1 的 spring-security-3.0.xsd 模式。请将您的架构声明更新为 3.1 架构。

这是我的调度程序 servlet 架构:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">

首先,我认为我提到的两个.xsd文件都存在冲突,但现在两个“.xsd”文件具有相同的架构。

编辑:活动详情

org.springframework.beans.factory.parsing.BeanDefinitionParsingException:配置问题:您不能在 Spring Security 3.1 中使用 spring-security-2.0.xsd 或 spring-security-3.0.xsd 模式。请将您的架构声明更新为 3.1 架构。违规资源:文件 [C:/Documents and Settings/Administrator/My Documents/Google Drive/spring_workspace/spring security_demo/WebContent/WEB-INF/security-context.xml]

在 org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$BeansConfigProblemReporter.fatal(BeansConfig.java:1137)

在 org.springframework.beans.factory.parsing.ReaderContext.fatal(ReaderContext.java:68)

在 org.springframework.beans.factory.parsing.ReaderContext.fatal(ReaderContext.java:55)

在 org.springframework.security.config.SecurityNamespaceHandler.parse(SecurityNamespaceHandler.java:66)

在 org.springframework.ide.eclipse.beans.core.internal.model.namespaces.DelegatingNamespaceHandlerResolver$ElementTrackingNamespaceHandler.parse(DelegatingNamespaceHandlerResolver.java:177)

在 org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1411)

在 org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$ErrorSuppressingBeanDefinitionParserDelegate.parseCustomElement(BeansConfig.java:1428)

在 org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1401)

在 org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:172)

在 org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$ToolingFriendlyBeanDefinitionDocumentReader.doRegisterBeanDefinitions(BeansConfig.java:1357)

在 org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:94)

在 org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:508)

在 org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$2.registerBeanDefinitions(BeansConfig.java:410)

如何解决?

4

1 回答 1

3

你的例外说

你不应该使用 4.1 xsd,因为你的 spring security 版本是 3.1

在下面的行中,您提到 Spring Security 版本为 4.1,它应该是 3.1

 http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.1.xsd">

两种方法解决

  1. 改成http://www.springframework.org/schema/security/spring-security-3.1.xsd
  2. 删除版本,以便 spring 将自动采取http://www.springframework.org/schema/security/spring-security.xsd

更新:将 use-expressions 属性添加到. 由于http您使用的是表达式hasRole('Role_Admin'),因此您必须提供此属性。

<security:http auto-config="true" use-expressions="true">
于 2016-09-24T08:51:10.120 回答