- PR -

filter-mapping

1
投稿者投稿内容
hypergori
会議室デビュー日: 2004/01/20
投稿数: 19
投稿日時: 2004-02-09 15:09
こんにちわ
Struts1.1とtomcat5の環境で、Filterを使って
Login済みチェック(クラス名 LoginCheckFilter)を行おうと
しているんですが、web.xmlのfilter mappingとディレクトリ構成で、悩んでいます。

基本的には、ほとんどのリソース(JSP.servlet,jpg,css,script)への
アクセス時にも、Filterをかけ(DBのアカウント情報と、いままでに
入力された情報が一回でもマッチしたかをsessionオブジェクトを使用して
CHECK、だめならエラーページへフォワード)たいのですが、例外として

/Login.jsp(ログイン画面)
/login.do(ログインのアクションクラス)
/LoginErro.jsp(ログインエラー画面)
/style/login.cssとか、/script/login.inc
のみは、Filterを通したくないのです。通すとだれもこのアプリにアクセスできないのでw

現在のディレクトリ構成は、webapp/testAP(ルート) の直下に
すべてのJSPが配置してあります。filter mappingは、
<filter-mapping>
<filter-name>LoginCheckFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
で、filterクラス内で、PATHを取ってアクセス先が
Login.jsp等ならエラーチェックしないというようにしてあります。
が、なんだかいまいちな気がして。そこで、

基本的には、/* はFilter使うけど、 Login.jsp login.doは、除くという
設定方法はあるのでしょうか?もしくは、ディレクトリを
Login系とそれ以外で完全にわけてしまうしかないでしょうか?
(/l/Login.jsp 、/o/FirstPage.jspとかにして、/o/* をurl-patternにする)
もしくは、その代替案があれば、教えていただきたく
よろしくお願いいたします。


hypergori
会議室デビュー日: 2004/01/20
投稿数: 19
投稿日時: 2004-02-10 10:46
自己レスです。
petstore1.3.2のソースを追ったところ、
”ほとんどのURLは、FILTERでチェックをするが、login関連のページは、
FILTERでのチェックをしない”ことの実現は、
Servlet Filterのなかでやっていました(web.xmlではなく)。

SignOnFilter.java内で、
このページへのリクエストがきて、ログイン済みじゃなかったら
エラーページへフォワード、Loginページだったら、
DBをみにいいって、セッションにログイン済みフラグをたてるとか。

なので、web.xmlのfilter-mappingだけでは、無理そうでした。
Resinには、正規表現でURL-patternを指定することができる機能があるようでしたが。
あるurl-patternを exclude する方法はないみたいです。

以上、調査報告でした。
1

スキルアップ/キャリアアップ(JOB@IT)