« PostgreSQLのパーティショニングテーブル | Main | Seasar2でConnectionPoolの情報取得 »

2007.07.23

Teedaでログイン管理

 Teedaでページを表示する際にログインしているかどうかを管理する方法。

 まずはTomcat等のコンテナに任せるという手が考えられますが、自前で管理する場合はInterceptorを使用するという手もあります。

参考
[Seasar-user:3397] ログインアプリケーション
[Seasar-user:8968] [Teeda]ログイン認証のIntercepter
sou - Interceptorでひとはまり。

 で、さくっとInterceptorを実装し、ログインしているという情報を取得できない場合はログインページに戻すような処理を記述。

 ここで最初陥ったのが、ログイン処理の無限ループ。
 prerender()に対してAspectを適用していたのですが、ログインページそのもののprerender()を処理する際にも認証処理が走ってしまい、

ログインページのprerender()→認証されていない→ログインページへ遷移→ログインページのprerender()→認証されていない→ログインページへ遷移→・・・(以下無限ループ)

っていう現象が発生してしまいました。
 これは、Interceptorを適用する際に、ログインページをaddIgnoreClassPatternで登録し、Interceptor適用対象外にすることで回避。

 とりあえず、認証が必要なページが直接呼び出されてしまった場合は、無条件でログインページに遷移させることが出来るようになりました。

 なお、ログイン後に自動的に元々呼び出そうとしたページに遷移させる(Tomcatの認証等ではそういう動きをさせることが可能)場合は、もう少し手を加える必要がありますが、この部分の動きをどうするかはアプリケーション次第、といったところでしょうか。
 ログイン後、強制的にメインページに遷移させるのか、あるいは元々呼び出そうとしていたページに遷移させるのか。前者なら実装もシンプルですが、後者だと元々呼び出そうとしていたページのリンクをhtmlにセットするなど、ある程度の処理を追加する必要があります。

|

« PostgreSQLのパーティショニングテーブル | Main | Seasar2でConnectionPoolの情報取得 »

Java」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference Teedaでログイン管理:

» Teedaでログアウト [気の向くままに・・・]
 Teedaで、ログインしたらやはりログアウトの処理も必要ってことで。  例えば [Read More]

Tracked on 2007.07.29 10:45

« PostgreSQLのパーティショニングテーブル | Main | Seasar2でConnectionPoolの情報取得 »