0

シングルサインオンがあり、ユーザーはwww.blabla.com/AppName/と入力してサイトにアクセスする可能性があります。次に、ウェルカムサイトを定義し、フェーズリスナーを使用して以下を確認します。

ユーザーはウェルカムサイトにアクセスしようとしていますか?はい->ログインしてみてください-動作しますか?はい->ユーザーロールを取得->この特定のユーザーの適切なサイトに転送します。

たとえば、ユーザーniceBellyはページ/somewhere/in/many/folders/beer.jsfに移動し、ユーザーbarbieは/breasts/pink.jsfに移動します。このアプリケーションでは、何らかの理由でリダイレクトができません。

その結果、たとえばページpink.jsfに到達しても、アドレスバーにblablaba.com/AppName/が表示されます。最初のリンクをクリックすると、ブラウザはフォームアドレスを新しいURLとして使用します(例:welcome.jsf)。coolstuff.jsfに移動します。ページcoolstuffに、最後のフォームのURL(welcome.jsfなど)があります。次に、クールなものでリンクをクリックし、次のページでURLとしてクールなものを取得します。

これを解決する/回避する方法はありますか?

4

1 に答える 1

3

症状を考えると、実際にはリクエストをリダイレクトしていませんが、実際にはリクエストを転送しています。電話をかけると、実際のリダイレクトが行われます

externalContext.redirect(url);

JSFコンテキストで、または追加するとき

<redirect />

ナビゲーションケースに。他のすべての方法は効果的に転送されます。症状に応じて、他のページに移動するために、outputlinksの代わりにcommandlinksを使用しています。CommandlinksはPOSTリクエストを現在のURLに送信し、JSFはRequestDispatcher、ナビゲーションケースにが含まれていない場合に、リクエスト/レスポンスの宛先を設定するために使用されます<redirect />。転送は、宛先URLで新しいGET要求を実行するようにブラウザーに指示しないため、ブラウザーのアドレスバーのURLは変更されません。実際のリダイレクトはまさにそれを行います。

参照:

于 2011-04-01T13:24:54.263 に答える