- - PR -
JSFでのログイン管理に関して
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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に遷移 させようと思っています。 |
|
投稿日時: 2006-07-09 13:54
フィルタでのログインチェックをする前に、
HttpServletRequest#getRequestURI()の戻り値が "login.jsf"で終了するかを検証すればよいと思います。 |
|
投稿日時: 2006-07-12 22:52
最初の1回だけは表示できる、というのは
「どこのページでも最初は見せてあげるけども、 ログインしないと巡回できないよ。 毎回ブラウザを立ち上げなおしながら見るか、 それがいやなら会員登録しなよ」 というような仕様でもない限りナンセンスですが…。 (しかもcookieを切ってれば巡回できてしまいそう:-) もしもログインのためのユーザIDとパスワードを入力する 画面を表示したいということだとすれば、 それはFilterによって表示させるべきです。 暗黙にユーザはかならずlogin.jsfというURLからアクセスを 開始してくれると考えていませんか? たとえばログインした後のhoge.jsfというページをお気に入りに 登録した場合はどうなるでしょう? |
|
投稿日時: 2006-07-13 09:22
私の場合ですが、セッション管理は以下のような方法で実現しています。
参考になれば幸いです。 @ログイン状態を管理するマネージドビーンをセッションスコープで保持するようにする Aログイン画面のJSPではリクエストがあった際に@のマネージドビーンが存在しない 又は、存在してもログイン状態がFalseの場合だけログインするためのフィールドと ボタンを表示する(rendered=true) Bアプリケーションの全てのURLに対して@のマネージドビーンが存在しない又は 存在してもログイン状態がFalseの場合にエラーページにフォワードするようフィルタ を作成し、設定する。但し、フィルタの初期化パラメータでチェック対象外としたい URLなどを指定できるようにする(ログイン画面などを除外するため)。 |
1