0

Tuckey URLRewriteFilterを使用しています。私のアプリケーションには、次のページとボタンがあります。

  1. inside.xhtmlアプリのコンテキスト内にあるページ: http://example.com/app/inside.xhtml
  2. outside.xhtmlアプリのコンテキスト外のページ: http://example.com/outside.xhtml
  3. http://example.com/app/login.xhtmllogin.xhtmlのページ
  4. ページに移動するためのページlogin button上の A。outside.xhtmllogin.xhtml
  5. http://example.com/app/profile.xhtmlprofile.xhtmlのページ
  6. ページに移動するためのページlogout button上の A。profile.xhtmlinside.xhtml

ファイルには、からにumlrewrite.xhtmlリダイレクトする次のルールがあります。inside.xhtmloutside.xhtml

<rule>
    <note>
        Requests to /app/inside.xhtml will be redirected to ./../../outside.html
    </note>
    <from>/app/inside.xhtml</from>
    <to type="redirect">./../../outside.html</to>
</rule>

私の論理では、ユーザーがページにログインした後、ユーザーはlogin.xhtmlページにリダイレクトされprofile.xhtmlます。私が期待しているのは、次の流れです。

  1. にサーフィンしoutside.xhtmlます。
  2. クリックlogin buttonしてアクセスしlogin.xhtml、ログインしてください。
  3. profile.xhtmlログイン成功で到着。
  4. をクリックlogout buttonして に移動しinside.xhtmlます。
  5. にリダイレクトされoutside.xhtmlます。

ただし、実際には次のようになります。

  1. にサーフィンしoutside.xhtmlます。
  2. クリックlogin buttonしてアクセスしlogin.xhtml、ログインしてください。
  3. 突然 にリダイレクトされoutside.xhtmlます。
  4. クリックlogin buttonしてlogin.xhtml再度ログインします (アプリはログインを記録しませんでした)。
  5. profile.xhtmlログイン成功で到着。
  6. をクリックlogout buttonして に移動しinside.xhtmlます。
  7. にリダイレクトされoutside.xhtmlます。

2上記の状況は、ステップごとに実行し続けると繰り返し発生します7

それがなければ、ログインに成功すると常にページに正しく<rule>リダイレ​​クトされます。profile.xhtml

この問題について何かアドバイスをいただければ幸いです。

アップデート:

私のアプリでは、logged in状態を追跡するために、状態@SessionScopedを記録する簡単なメソッドを含むマネージド Bean があります。

public void recordUserLoggedIn(HttpServletRequest request) {
    HttpSession clientSession = request.getSession();
    clientSession.setAttribute("isLogin", true);
}
4

1 に答える 1

0

「ログイン」状態の追跡方法は指定しません。カスタムCookieを使用していますか?アプリケーションサーバーの組み込みのセッション処理(Cookieベースの可能性もあります)に依存していますか?

問題の最も可能性の高い原因は、ログイン状態を追跡する方法、およびその状態がさまざまなページとコンテキスト間でどのように渡されるかに関連しています。(特に、ログインからprofile.xhtmlに移行する場合。)Cookieはパスベースである可能性があることに注意してください。

問題をデバッグするには:

  • ブラウザを使用している場合は、firebug / developer-toolsを使用して[ネットワーク]タブを監視します。特に、フローの各ステップで設定されているさまざまなヘッダーを確認してください。

  • ブラウザを使用していない場合は、CharlesFiddlerなどのプロキシを使用してみてください。

フロー中にHTTPヘッダーを監視することで、根本的な問題が明らかになると思います。

于 2013-03-11T17:59:23.353 に答える