【发布时间】:2013-02-19 03:17:18
【问题描述】:
我有一个在 JBoss 7.1.1 上运行的 Java EE 6 Web 应用程序,其中一些页面需要身份验证,而许多页面不需要。对于经过身份验证的页面,我使用的是 this previous post 中所述的 Servlet 3.0 Programmatic Security。
在我的 web.xml 中,我有以下条目
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login</form-login-page>
<form-error-page>/loginError</form-error-page>
</form-login-config>
</login-config>
在我的 Login 类中,我有一个用 @PostConstruct 注释的方法,在该方法中捕获了请求的页面:
String previousURL = (String) FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get(RequestDispatcher.FORWARD_QUERY_STRING)
但是,它评估的是 /login 页面本身,而不是用户请求的页面,并且由于 web.xml 中的登录配置设置,JBoss然后将其转发到该页面。结果,当我转发到 previousURL 时,它只是将我带回到登录页面,而不是用户最初单击的页面。我究竟做错了什么?
【问题讨论】:
标签: java security jsf-2 jboss7.x java-ee-6