web.xml - Фильтры Java - сервлетов и проблемы с шаблоном WebSphere - URL

StackOverflow https://stackoverflow.com/questions/1879688

Вопрос

Итак, мы запускаем веб-приложение, которое было протестировано на Tomcat, Glassfish, WebLogic и WebSphere.Все работают корректно, за исключением WebSphere.Проблема в том, что фильтры не обрабатываются для файлов в определенном каталоге.

Например, у меня есть фильтр, который проверяет язык пользователя из файлов cookie браузера, а другой, который получает имя пользователя, в web.xml они настроены следующим образом:

<!-- ****************************** -->
<!-- * Security context filtering * -->
<!-- ****************************** -->

<filter>
    <filter-name>SetSecurityContextFilter</filter-name>
    <filter-class>
        com.test.security.SecurityContextServletFilter
    </filter-class>
</filter>

<!-- ****************************** -->
<!-- ** Locale context filtering ** -->
<!-- ****************************** -->

<filter>
    <filter-name>SetLocaleFilter</filter-name>
    <filter-class>
        com.test.locale.LocaleServletFilter
    </filter-class>
</filter>

<filter-mapping>
    <filter-name>SetSecurityContextFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<filter-mapping>
    <filter-name>SetLocaleFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping> 

Оба фильтра устанавливают статическую переменную threadlocal, к которой можно получить доступ из статического средства получения, но когда тот же файл 'test.jsp' вызывает средства получения в разделе 'контекстный корень/js' они возвращают значения по умолчанию (как если бы они были не заданы), находясь в 'контекстный корень/страницы" они верны.

Есть какие-нибудь идеи?

Заранее благодарю.

Это было полезно?

Решение

Я обнаружил, в чем была проблема!

В моем web.xml далее у меня есть это:

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Test Application</web-resource-name>
            <url-pattern>/pages/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
             ...
        </auth-constraint>
    </security-constraint>

Если я изменю шаблон URL на '/ *', чтобы для каждой страницы в корневом каталоге контекста требовался логин, все фильтры будут выполняться корректно, постоянно.Однако это означает, что моя страница входа в систему не имеет доступа ни к каким CSS-файлам, но это еще одна проблема!

Ваше здоровье.

Другие советы

Определение вашей страницы входа в систему как form-login-page может помочь ей получить ресурсы css следующим образом <form-login-config> <form-login-page>/Login.jsp</form-login-page>

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top