を使用して構築ADF (using JDeveloper 11.1.2.2.0)
および展開されたいくつかのプロジェクトをサポートしていますTomcat 7.0.28.
JSessionID:
ログインする前とログインした後で、IT が異なるはずであるという問題がありました。これを解決するために、私のメソッドvalidate()
(ユーザーがログインフォームを送信したときに実行される)で次のことを行います:
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
HttpSession session = (HttpSession)ec.getSession(false);
session.invalidate();
session = (HttpSession)ec.getSession(true);
//setting some special session attributes
ec.redirect("nextPage");
に到達するnextPage
と、上記で設定された特別な属性を使用してセッションを取得し、さらに先に進むことができます。Firefox または Chrome からログインすると、すべて正常に動作します。
しかし、IE 8.0 を使用してログインし、にリダイレクトされるnextPage
と、コードはこれらの特別な属性なしでセッションを取得し、ログイン ページに戻ります。
Wireshark を使用して、Firefox がログインすると、ユーザー入力 (ユーザー名/パスワード) で POST 要求を送信し、 newJSessionID in SetCookie parameter
で応答を受け取り、別の要求を送信しAdf-Window-id
て応答を受け取り、その後にリダイレクトされることに気付きましたnextPage
。
しかし、IE フローの場合は異なります。ログイン時に IE が送信two POST request in a row
(first with user input, second with Adf-Window-id)
し、その後、それぞれが異なるJSessionID
. 最後の 1 つを保存し、にリダイレクトされnextPage
ます。明らかに、最後の JSessionID は、特別な属性を設定したセッションに属していません。
構成とGoogleを掘り下げてこの問題を解決しようとして、すでに数日を費やしましたが、成功しませんでした。私が見ることができるすべて-IEは時々期待どおりにログインできます(この場合、上記の2つの回答が逆の順序で受信されます)が、めったに起こりません。
多分あなたは同じ問題に直面し、それを解決しましたか?それとも、何か間違ったことをしている/期待しているのですか?