jsf应用中的OAuth回调

时间:2012-12-12 10:43:47

标签: java jsf oauth

在此jsf Web应用程序的某个时刻,系统会提示当前用户通过OAuth识别Twitter。

用户在Twitter上识别后,OAUth回调网址重定向到我的应用程序:

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

但是当然没有会话ID,这个successAuth.xhtml没有连接到用户会话。该页面只是“原始”xhtml文件(包含其所有标签)而没有html。

如何将此回调网址链接回当前会话?

1 个答案:

答案 0 :(得分: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必须与FacesServlet的URL模式匹配才能调用它。因此,如果您已将其配置为侦听例如/faces/*个网址,那么您显然应将网址更改为faces/successAuth.xhtml

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

或者,您也可以在FacesServlet上映射*.xhtml,这样您就不需要使用虚拟网址。

另见: