java - 在 JAAS 重定向之前检索请求的 URL

标签 java jsf redirect authentication jaas

是否可以在 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>

所以,当我没有登录并尝试去 ex 时。 www.blah.com/myApp/users.jsf 然后应用将我重定向到 login.jsf 但 url 仍然与用户请求的相同。

然后我填写登录表单并单击“登录”,这将转到我的 backbean,在那里调用我的 loginModule 和 callbackHandler 例如:

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,即当它被直接打开而没有先点击受限 URL 时)

收集它的最佳位置是与登录页面关联的 @ViewScoped bean 的(后)构造函数。

另见:

关于java - 在 JAAS 重定向之前检索请求的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13957517/

相关文章:

Java - 方法中的 NullPointerException

java - 当我传递类的变量时,paintComponent 方法不绘制任何东西

css - <h :outputStylesheet doesn't work within JSF <ui:composition

java - 可变数量的线程/声明 ExecutorService

java - 如何从 Google 数据存储中检索数据?

jsf - <p :rowExpansion> and empty values in <p:cellEditor> on scrolled page when using <p:dataTable lazy ="true" liveScroll ="true"> 中的错误值

java - 从 Eclipse IDE 运行时,Tomcat 7 中缺少部署目录

linux - 基本程序输出重定向在 CentOS V.2.16.0 版本 5.8 中不起作用

node.js - 使用 koa-router 在 koa 中使用嵌套路由进行重定向

java - 如何获取重定向 URL