Java EE 6安全性和重定向
作者:互联网
我有一个在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中的login-config设置而由JBoss转发.因此,当我转发到previousURL时,它只会让我回到登录页面,而不是用户最初点击的页面.我究竟做错了什么?
解决方法:
您正在尝试检索错误的属性.您应该尝试检索的是RequestDispatcher.FORWARD_REQUEST_URI,它是一个实际的URI.您当前正在尝试检索的是查询字符串(基本上是在实际URL之后的任何内容;?param = 1等)跟随请求的URL
标签:java,security,jsf-2,jboss7-x,java-ee-6 来源: https://codeday.me/bug/20190709/1410977.html