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

Back to archive index

Masaya seko masay****@nifty*****
2011年 3月 1日 (火) 18:54:50 JST


お世話になっております。世古と申します。

分からないことがあって困っております。
どなたかご存知の方が居られましたらご教授ください。

■環境
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 メーリングリストの案内
Back to archive index