« 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

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/15854091

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

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

Tracked on 2007.07.29 at 10:45

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