Как использовать фильтры Spring-Security без контекста приложения? - PullRequest
3 голосов
/ 26 июля 2011

Я хочу использовать веб-фильтры Spring Security без контекста приложения Spring (или контейнера Spring) прямо из кода Java.

Возможно ли это?Могу ли я вызвать различные методы весеннего жизненного цикла напрямую, и если да, то есть ли образец того, как это сделать (какие интерфейсы нужно обрабатывать и их порядок)?

Ответы [ 2 ]

5 голосов
/ 26 июля 2011

Я хочу использовать веб-фильтры Spring Security без контекста приложения Spring

Вы не можете.

Потому чтокогда вы определяете прокси цепочки фильтров в вашем web.xml:

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

DelegatingFilterProxy фактически ожидает найти там contextConfigLocation и действительные файлы конфигурации:

<context-param>
    <param-name>contextConfigLocation</param-name>

    <!-- This must be valid otherwise your .war deployment will fail -->
    <param-value>WEB-INF/spring-contexts/spring-contexts.xml</param-value>
</context-param>
3 голосов
/ 27 июля 2011

Я думаю, что это возможно, но оно того не стоит.

Spring - это сложная среда, которая изолирует вас от бремени настройки Java-приложения. Почему вы хотите использовать Spring без Spring?

Отвечая на ваш вопрос, Acegi, ранее работавший в Spring Security, заявил, что может использоваться без Spring.

Так что вы можете попробовать, но вашей главной проблемой будет загрузка всего приложения при запуске сервера. Вам нужно будет продублировать функциональность, которая содержит ContextLoaderListener.

Попробуйте создать собственный слушатель вместо

    <!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

А затем настройте основной сервлет для своего приложения (поскольку я предполагаю, что вы не хотите использовать Spring MVC) и фильтр безопасности, как сказал Симеон .

И удачи.

Кроме того, вы можете попробовать Apache SHIRO

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