web.xmlファイル - JavaサーブレットフィルタおよびWebSphere - URLパターンの問題
-
18-09-2019 - |
質問
だから我々は、Tomcat、Glassfishのは、WebLogicおよびWebSphere上でテストされたWebアプリケーションを実行しています。すべては、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>
両方のフィルタは、静的なゲッターからアクセスすることができ、静的な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ファイルへのアクセス権を持っていないという意味ではないが、それは別の問題だ!
乾杯。
他のヒント
フォームのログイン・ページとしてログインページを定義することは、CSSリソースを得るのを助けるかもしれません
次のように
<form-login-config>
<form-login-page>/Login.jsp</form-login-page>