Определите элемент http безопасности Spring в двух разных файлах? - PullRequest
4 голосов
/ 28 сентября 2011

Можно ли определить элементы security:intercept-url и security:custom-filter для одного security:http в двух разных файлах конфигурации Spring?

Это сделано для того, чтобы мы могли без проблем использовать определения security:custom-filter, которые будут общими для многих приложений с правилами перехвата, которые не будут.


Я не могу просто скопировать элемент <security:http>, потому что я получаю BeanDefinitionParsingException: Configuration problem: Duplicate <http> element detected. Я хорошо знаю, как разделить обычный файл компонента с помощью import

Ответы [ 3 ]

4 голосов
/ 29 сентября 2011

В соответствии с запросом в комментарии:

Версии Spring Security до 3.1.x не допускают нескольких определений элементов http.

3.1 делает, однако.

Здесь - это проблема Jira для этой функции.

Эта статья в изменениях 3.1 также можетбыть полезным.


Вы можете определить другой файл контекста в своем файле web.xml:

<context-param>
  <param-name>contextConfigLocation</param-name>
    <param-value>
      /WEB-INF/spring-contexts/context1.xml
      /WEB-INF/spring-contexts/context2.xml
    </param-value>
</context-param>

Или вы можете определить каталог, в котором будут находиться ваши контексты, и называть их по-своемунапример, без необходимости указывать каждый файл контекста отдельно:

<context-param>
  <param-name>contextConfigLocation</param-name>
    <param-value>
      /WEB-INF/spring-contexts/*
    </param-value>
</context-param>

Что касается ответа Ayusman, вы можете импортировать контексты безопасности в контексты вашего компонента:

<beans>

    <import resource="classpath*:/security-context-*.xml"/>

    <bean><!-- blah blah --></bean>

</beans>
0 голосов
/ 27 декабря 2012

Я работал над этой ошибкой в ​​течение 5 часов.Действительно глупая проблема.

Эта ошибка является ошибкой разбора, когда вы комментируете некоторые строки в applicationContext-security.xml, файлы не генерируются правильно.

Позвольте мне объяснить пример кода.

<port-mappings>
        <port-mapping http="7001" https="7002" />
</port-mappings>

<!--    <port-mappings>
        <port-mapping http="7015" https="7515" />
    </port-mappings>
 -->

эти строки генерируются как

<port-mappings>
        <port-mapping http="7001" https="7002" />
</port-mappings>

    <port-mappings>
        <port-mapping http="7015" https="7515" />
    </port-mappings>
 -->

, так что компилятор сообщает вам «обнаружен дубликат элемента».Поскольку сгенерированный файл содержит повторяющиеся элементы.

Я надеюсь помочь вам.

0 голосов
/ 28 сентября 2011

использовать импорт в файле контекста приложения.

custom-filter.appcontext.xml
.
.
<import resource="interceptor-url-file.xml"/>

Обратите внимание, что оба файла должны иметь правильные детали XML-схемы Spring и ДОЛЖНЫ быть действительными файлами XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...