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 就不会连接到用户会话。

如果您的 servletcontainer 支持 URL 重写(默认情况下,它们都支持),那么您可以将会话 ID 作为 URL 路径片段传递。

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

也可以看看:


该页面只是“原始”xhtml 文件(及其所有标签),没有 html。

FacesServlet没有被调用时,就会发生这种情况。请求 URL 必须与 的 URL 模式匹配FacesServlet才能调用它。因此,如果您已将其配置为侦听例如/faces/*URL,那么您显然应该将 URL 更改为faces/successAuth.xhtml.

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

或者,您也可以只映射FacesServleton *.xhtml,这样您就不需要摆弄虚拟 URL。

也可以看看:

于 2012-12-12T11:50:03.033 回答