OpenId+JSF将用户重定向到他登录的页面



我正在使用OpenId4Java与JSF应用程序,我在我的web.xml中添加了安全约束,就像这样…

<security-constraint>
     <web-resource-collection>
       <web-resource-name>Restricted</web-resource-name>
       <url-pattern>/core/*</url-pattern>
       <http-method>GET</http-method>
       <http-method>POST</http-method>
     </web-resource-collection>
</security-constraint>
<login-config>
  <auth-method>FORM</auth-method>
  <form-login-config>
    <form-login-page>/user/login.xhtml</form-login-page>
    <form-error-page>/user/logout.xhtml</form-error-page>
  </form-login-config>
</login-config>

现在当应用程序启动时,用户想要访问

http://www.somehost: 8080/myapp/核心/abc.xhtml

web.xml的帮助下,我能够向用户显示一个登录页面,现在这里我把登录与openid像谷歌,雅虎现在我的问题是,我怎么能告诉openid我的返回url

http://www.somehost: 8080/myapp/核心/abc.xhtml

或者用户来自

http://www.somehost: 8080/myapp/核心/xyz.xhtml

这个url然后成功登录后用户将进入这个页面。

为了获得用户试图访问的原始url,请尝试使用变量RequestDispatcher.FORWARD_REQUEST_URI。

只有当您从其他受限制的页面重定向到登录页面时,此变量才可用。因此,请记得设置一些默认url,以防用户直接点击登录页面。

正如rufai所指出的,一旦用户请求的原始url可用,在身份验证完成后,您可以按照本文中提到的步骤重定向到该url。

使用重定向来转发下一页的控件

String returnToUrl = returnToUrl("/nextPage.xhtml");
FacesContext.getCurrentInstance().getExternalContext().dispatch(returnToUrl);

看看这个:

http://blog.enterpriselab.ch/tdmarti/2011/04/06/openid-in-a-web-application-based-on-java-ee-and-jsf-2-0/

更新:

要确定从哪个页面发出请求,请参考这些帖子:

如何在调度程序之后从servlet请求中获取前页URL。提出(请求、响应)

如何在多个servlet转发后从servlet/jsp获得原始请求url

http://www.coderanch.com/t/361942/Servlets/java/Track-Jsp-request-coming-Servlet

相关内容

  • 没有找到相关文章

最新更新