- PR -

JSFでのログイン管理に関して

1
投稿者投稿内容
sima
会議室デビュー日: 2006/07/09
投稿数: 2
投稿日時: 2006-07-09 11:59
こんにちは。
今、JSFでのログイン管理の仕組みで悩んでいます。

このページの書き込みを参考にしてFilterクラスを実装した新しいLoginFilterを作成し、
web.xmlに登録しました。(下記参照)

<filter>
<filter-name>loginFilter</filter-name>
<filter-class>LoginFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>*.jsf</url-pattern>
</filter-mapping>

この場合、jsfに対するアクセスがあった場合にすべてLoginFilterが実行されるのは
理解できたのですが、最初にlogin.jsfを表示するときにはこのFilterを実行しない
ような設定方法はあるのでしょうか?
なおlogin.jsfではユーザ情報を格納したクラスをセッションに格納し、Filterクラスでは
セッション中のユーザ情報を格納したクラスをチェックし、無ければまたlogin.jsfに遷移
させようと思っています。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2006-07-09 13:54
フィルタでのログインチェックをする前に、
HttpServletRequest#getRequestURI()の戻り値が
"login.jsf"で終了するかを検証すればよいと思います。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2006-07-12 22:52
最初の1回だけは表示できる、というのは
「どこのページでも最初は見せてあげるけども、
 ログインしないと巡回できないよ。
 毎回ブラウザを立ち上げなおしながら見るか、
 それがいやなら会員登録しなよ」
というような仕様でもない限りナンセンスですが…。
(しかもcookieを切ってれば巡回できてしまいそう:-)

もしもログインのためのユーザIDとパスワードを入力する
画面を表示したいということだとすれば、
それはFilterによって表示させるべきです。
暗黙にユーザはかならずlogin.jsfというURLからアクセスを
開始してくれると考えていませんか?
たとえばログインした後のhoge.jsfというページをお気に入りに
登録した場合はどうなるでしょう?
TAKEZO
ベテラン
会議室デビュー日: 2003/12/25
投稿数: 59
投稿日時: 2006-07-13 09:22
私の場合ですが、セッション管理は以下のような方法で実現しています。
参考になれば幸いです。

@ログイン状態を管理するマネージドビーンをセッションスコープで保持するようにする

Aログイン画面のJSPではリクエストがあった際に@のマネージドビーンが存在しない
 又は、存在してもログイン状態がFalseの場合だけログインするためのフィールドと
 ボタンを表示する(rendered=true)

Bアプリケーションの全てのURLに対して@のマネージドビーンが存在しない又は
 存在してもログイン状態がFalseの場合にエラーページにフォワードするようフィルタ
 を作成し、設定する。但し、フィルタの初期化パラメータでチェック対象外としたい
 URLなどを指定できるようにする(ログイン画面などを除外するため)。
1

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