- 524 名前:504 mailto:sage [2005/09/03(土) 16:40:41 ]
- なんか妙に伸びてると思ったら誰かが私の代わりに盛り上げてくれた人がいたのですね。
というかひょっとして現在進行中ですか。 なんか流れに水を注すようで申し訳ないのですが、せっかくだから書いときます。 セッションにログイン情報を格納する方式はJSFが提供するManaged Bean、 セッションからログイン状態を評価するタイミングとしてServletFilterとPhaseListener、 という方式を教えていただいたので、いろいろ考えておりました。 ServletFilterで処理する場合、FacesServletの処理の前にManagedBeanを取得して評価 することになると思うんですが、そうなると、HttpSessionからStringのキーを指定して Managed Beanを取得せねばならない気がします。 どうやらfaces-config.xmlで<managed-bean>要素内の<managed-bean-name>要素 に指定された文字列を指定してgetAttributeしたら取れそうなんですが、 そういう名前でセッションにぶら下がってる保証があるのかどうかわからんくて困っております。 LoginBean loginBean = (LoginBean)((HttpServletRequest)request).getSession().getAttribute("loginBean"); とかフィルタで書いといて、JSFの実装差し替えたらセッションにManaged Beanを格納する方式 が変わってたりして動かなくなったらどうしようみたいな。 だったらManaged Beanに頼る意味あるのかなあ。どうせServletFilterで生のセッション触るなら ログイン情報もログイン時にHttpSessionに直に書いてもいいんじゃないだろうか、とか。 なんかまとまってないですね。もうちょい考えます。 PhaseListenerの場合は、実装に特に問題はなさそうなんですが、 「フェーズと何の関係があるんだろう?」という疑問が湧き。 とりあえずrestoreViewのあたりに仕込んでValiableResolverでログイン時のManaged Beanを取得 して評価する。オッケーならスルーで、ダメなら、、。うーん、(JSF的には)どうすればいいんだろう。 ここでやるのは正しいんでしょうか。
|

|