문제

그래서 우리는 Tomcat, Glassfish, Weblogic 및 WebSphere에서 테스트 된 웹 응용 프로그램을 실행하고 있습니다. WebSphere를 제외한 모든 것이 올바르게 실행됩니다. 문제는 필터가 특정 디렉토리의 파일에 대해 처리되지 않는다는 것입니다.

예를 들어, 브라우저 쿠키에서 사용자의 라 누이지 (Lanuage)와 사용자의 사용자 이름을 얻는 다른 필터가 있습니다. 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> 

두 필터는 정적 getter에서 액세스 할 수있는 정적 ThreadLocal 변수를 설정하지만 동일한 파일 'test.jsp'가 getters를 호출하면 'Contextroot/js '그들은 아래에있는 동안 기본값을 반환합니다.Contextroot/페이지 '그들은 맞습니다.

어떤 아이디어?

미리 감사드립니다.

도움이 되었습니까?

해결책

나는 문제가 무엇인지 발견했다!

내 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 파일에 액세스 할 수 없지만 또 다른 문제입니다!

건배.

다른 팁

로그인 페이지를 양식 로그 인 페이지로 정의하면 다음과 같이 CSS 리소스를 얻는 데 도움이 될 수 있습니다.<form-login-config> <form-login-page>/Login.jsp</form-login-page>

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top