[Wicket-ja-user 512] Re: セッション再生成後のページ遷移

Back to archive index

shinya okino shiny****@gmail*****
2011年 3月 2日 (水) 12:03:11 JST


世古様

沖野です。
試していないのでうまくいくかわかりませんが、
以下のような方法が考えられます。

ログイン前に
IUnauthorizedComponentInstantiationListener#onUnauthorizedInstantiation(Component)
に認証が必要なページのインスタンスが渡されるのでそれを自分でSessionに保存します。

ログイン認証してセッション再発行後に
continueToOriginalDestinationを使わずに
保存していたページのクラスを
Component#setResponsePage(Class)
に渡せば遷移できると思います。

2011年3月1日18:54 Masaya seko <masay****@nifty*****>:
>
> お世話になっております。世古と申します。
>
> 分からないことがあって困っております。
> どなたかご存知の方が居られましたらご教授ください。
>
> ■環境
> Wicket 1.3.6
>
> ■やりたいこと
> 以下の2点を行ないたいと考えております。
> 1.認証が必要なページ(以降「Aページ」とします)を表示した際に、ログイン画面を
> 出したい。ログイン画面でログインの操作を行なった後は、Aページに遷移したい
>> 2.CSRF対策として、ログイン後にセッションの再発行を行ないたい。
>
> 1については、hayasshさんのエントリ内に記載されている
> http://d.hatena.ne.jp/hayassh/20090415/1239797052と似た感じのことをしています
>> 私はIAuthorizationStrategyとIUnauthorizedComponentInstantiationListenerを
> 使用しているため細部はことなりますが、「ログイン後は、Aページに遷移したい」の
> 部分については、continueToOriginalDestination()を使用しています。
>
> 2については、ログイン成功時に以下のようにして行なっています
> (Wicket1.4のSession#replaceSession()と同じ処理)。
> ----
> Application.get().getSessionStore().invalidate(RequestCycle.get().getRequest()
> );
> bind();
> ----
>
>
> ■困っていること
> 以下の操作を行なった際にPageExpiredErrorPageに遷移してしまいます。
> (本当は、以下の3でAページを表示したい)
> 1.認証が不要なページに存在する、Aページへのリンク(PageLinkコンポーネントを使
> 用)をクリック。
> 2.ログイン画面が表示されるので、ログインの操作を行なう。
> 3.PageExpiredErrorPageがブラウザに表示される
>
>
> ■分かっていること
> WebRequestCycleProcessor#resolve(final RequestCycle,final RequestParameters)内
>> target = resolveRenderedPage(requestCycle, requestParameters);の呼び出し結果が
> nullとなった
> 結果PageExpiredErrorPageに遷移することが分かっています。
>
> 解析結果を踏まえますと、「セッションを作り直してしまった結果、URLと
> 遷移先ページの紐付けができない」という事象だと思われます。
> よって遷移先(ページA)がブックマーク可能なページであればこの問題は発生
> しないのですが、「認証が必要なページを全てブックマーク可能にする」というのは
> 解決策としてちょっと困りものです。
>
> 何か良い解決策は無いでしょうか?
>
> 以上、よろしくおねがいします。
>
> _______________________________________________
> Wicket-ja-user mailing list
> Wicke****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user




Wicket-ja-user メーリングリストの案内
Back to archive index