在JAAS重定向之前,是否可以检索用户请求的URL?
我的web.xml是这样的:
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsf</form-login-page>
<form-error-page>/login.jsf</form-error-page>
</form-login-config>
</login-config>
所以,当我没有登录并尝试去前. www.blah.com/myApp/users.jsf
然后应用程序将我重定向到login.jsf,但网址仍然与用户请求的相同.
然后我填写登录表单并单击Login,这将转到我的backbean,在那里调用我的loginModule和callbackHandler ex.:
public String actionLogin(){
//do my login and stuff
return "page that user requested";
}
我尝试了很多方法来获取用户请求的页面. request.getRequestURL()
所有人都回复了我:www.blah.com/myApp/login.jsf
获取所请求页面的任何方式? www.blah.com/myApp/users.jsf
问候
最佳答案 登录页面由服务器端向前在内部打开
RequestDispatcher#forward()
.这意味着最初请求的页面可用作请求属性,其名称在
RequestDispatcher.FORWARD_REQUEST_URI
中指定为常量.在JSF术语中,因此可用如下:
String originalURI = (String) externalContext.getRequestMap().get(RequestDispatcher.FORWARD_REQUEST_URI);
String originalQuery = (String) externalContext.getRequestMap().get(RequestDispatcher.FORWARD_QUERY_STRING);
if (originalQuery != null) {
originalURI+= "?" + originalQuery;
}
(请记住,对于返回null的情况,有一个后备网址,即直接打开它而不首先点击受限制的URL)
收集它的最佳位置是与登录页面关联的@ViewScoped bean的(post)构造函数.
也可以看看:
> Performing user authentication in Java EE / JSF using j_security_check