Ошибка конфигурации безопасности Spring - xsi: schemaLocation - PullRequest
0 голосов
/ 13 февраля 2020

Я добавил безопасность Spring в свое веб-приложение и сумел настроить его и заставить его работать, используя XSD-location-URI http://www.springframework.org/schema/security/spring-security-4.2.xsd. Это моя рабочая конфигурация с именем security-context. xml:

<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/security http://www.springframework.org/schema/security/spring-security-4.2.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <security:authentication-manager>
        <security:authentication-provider>
            <security:user-service>
                <security:user name="primaryadmin" authorities="admin"
                    password="dummypass" />
                <security:user name="secondaryadmin" authorities="admin"
                    password="dummypass" />
            </security:user-service>
        </security:authentication-provider>
    </security:authentication-manager>
    <security:http use-expressions="true">
        <security:intercept-url pattern="/**" access="isAuthenticated()" />
        <security:form-login />
    </security:http>
</beans>

Проблема, с которой я сталкиваюсь, состоит в том, что в этом месте самая высокая версия этого XSD-файла - 4.2, поэтому, когда я хочу использовать зависимости Maven (spring-security-core, spring-security-web, spring-security-config) с более высокой версией, 5.2.1.RELEASE , it терпит неудачу, говоря мне, что я должен обновить мои описания схемы до схемы 5.2 .

Я попытался разрешить ее, заменив XSD-location-URI на http://www.springframework.org/schema/beans/spring-beans.xsd, но затем я получаю эту ошибку во время развертывания:

Caused by: org.xml.sax.SAXParseException; lineNumber: 5; columnNumber: 35; cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'security:authentication-manager'.

Я также пытался ее решить, ссылаясь на скачанный Maven файл jar, содержащий файлы XSD, но это тоже не сработало:

<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/security classpath:org/springframework/security/config/spring-security-4.2.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"
    <security:authentication-manager>

В строке <security:authentication-manager> я получаю эту ошибку компиляции:

Element type "beans" must be followed by either attribute specifications, ">" or "/>".

Причина, по которой я хочу заменить эти зависимости более высокой версией, состоит в том, чтобы заставить их использовать ту же версию выпуска, что и другие мои пружинные компоненты. , Удаление classpath: в начале моего относительного пути не помогло.

Я перебрал кучу связанных вопросов и ответов, но никто не решил эту проблему, не могли бы вы посоветовать?

...