web.xml - Java Servlet Filtri e WebSphere - questioni modello URL
-
18-09-2019 - |
Domanda
Quindi, ci sono in esecuzione un'applicazione web che è stato testato su Tomcat, Glassfish, WebLogic e WebSphere. Tutti gestita correttamente, tranne WebSphere. Il problema è che i filtri non vengono elaborati per i file in una determinata directory.
Per esempio io ho un filtro che controlla lanuage dell'utente dal cookie del browser e un altro che ottenere il nome utente dell'utente, nel web.xml ci sono configurati in questo modo:
<!-- ****************************** -->
<!-- * 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>
Entrambi i filtri impostare una variabile ThreadLocal statica a cui si accede da un getter statico, ma quando lo stesso file 'test.jsp' invoca i getter, in ' contextroot / js' ritornano il default valori (come se non impostato), mentre sotto ' contextroot / pagine' che siano corrette.
Tutte le idee?
Grazie in anticipo.
Soluzione
ho scoperto quale fosse il problema!
Nel mio web.xml, più in basso ho questo:
<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>
Se cambio il pattern URL '/ *' in modo che ogni pagina sotto la root del contesto richiede un account di accesso, tutti i filtri sono eseguiti correttamente, per tutto il tempo. Ciò significa, tuttavia, che la mia pagina di login non ha accesso a qualsiasi file css ma questo è un altro problema!
Saluti.
Altri suggerimenti
Definizione della pagina di login come la forma-login-page potrebbe farne a ottenere risorse CSS
come segue
<form-login-config>
<form-login-page>/Login.jsp</form-login-page>