如何在websphere上进行基本认证后重定向到请求页面



我正在尝试使用HttpServletRequest.login方法登录用户。我已经设置了我的web.xml,创建了login.xhtml,并将登录按钮的动作映射到我的后台bean方法performLogin

问题是要从用户被重定向的位置获取URL。Ie。他试图去index.xhtml,但没有会话,所以被重定向到login.xhtml。我想首先获得他请求的url,所以我尝试从balusC描述的请求映射中读取RequestDispatcher.FORWARD_REQUEST_URI: JSF 2.0:如何在使用HttpServletRequest后重定向到受保护的页面。登录

这在使用websphere时不起作用,我猜是因为它不转发,而是将用户重定向到登录页面。但是,由于Websphere本身能够在http-form中使用内置的j_security_check操作时执行正确的转发,因此这一定是可以实现的!

我的问题基本上是;在websphere上运行时,我如何获得这个uri,以便在成功登录时将用户转发到正确的页面?

要获得您在websphere上被重定向的url,您可以读取名为WASReqURL的cookie。这里得到的uri包括主机名、端口和上下文路径,所以我在方法中删除了这些:

private String getRedirectUrl() {
    Map<String, Object> cookies = FacesContext.getCurrentInstance().getExternalContext().getRequestCookieMap();
    if (cookies.containsKey(WAS_REDIRECT_COOKIE_NAME)) {
        Cookie cookie = (Cookie) cookies.get(WAS_REDIRECT_COOKIE_NAME);
        String url = cookie.getValue();
        String context = FacesContext.getCurrentInstance().getExternalContext().getRequestContextPath();
        if (url != null && url.contains(context)) {
            url = url.substring(url.indexOf(context) + context.length() + 1);
        }
        return url;
    }
    return null;
}

相关内容

  • 没有找到相关文章

最新更新