0

この jsf Web アプリケーションのある時点で、現在のユーザーは OAuth を介して Twitter で識別するように求められます。

ユーザーが Twitter で識別された後、OAUth コールバック URL が私のアプリにリダイレクトされます。

http://www.myJsfApp.com/successAuth.xhtml

もちろん、セッション ID がないと、この successAuth.xhtml はユーザー セッションに接続されません。このページは「生の」xhtml ファイル (すべてのタグを含む) であり、html はありません。

このコールバック URL を現在のセッションにリンクするにはどうすればよいですか?

4

1 に答える 1

2

もちろん、セッション ID がないと、この successAuth.xhtml はユーザー セッションに接続されません。

サーブレットコンテナが URL 書き換えをサポートしている場合 (デフォルトでは、すべてサポートしています)、セッション ID を URL パスフラグメントとして渡すだけです。

HttpSession session = (HttpSession) externalContext.getSession();
String callbackURL = "http://www.myJsfApp.com/successAuth.xhtml;jsessionid=" + session.getId();
// ...

以下も参照してください。


このページは「生の」xhtml ファイル (すべてのタグを含む) であり、html はありません。

FacesServletが呼び出されていないときに発生します。FacesServletリクエスト URL は、それを呼び出すためにの URL パターンと一致する必要があります。したがって、たとえば/faces/*URL をリッスンするように構成した場合は、明らかに URL を に変更する必要がありますfaces/successAuth.xhtml

HttpSession session = (HttpSession) externalContext.getSession();
String callbackURL = "http://www.myJsfApp.com/faces/successAuth.xhtml;jsessionid=" + session.getId();
// ...

FacesServletまたは、単にonをマップすることもでき*.xhtmlます。この方法では、仮想 URL をいじる必要はありません。

以下も参照してください。

于 2012-12-12T11:50:03.033 に答える