ApacheShiro:用户在AJAX中进行身份验证,如何在登录后恢复GET变量?

ApacheShiro:用户在AJAX中进行身份验证,如何在登录后恢复GET变量?,ajax,jsf,jakarta-ee,shiro,Ajax,Jsf,Jakarta Ee,Shiro,在我的JavaEE应用程序中,我使用ApacheShiro[1]进行用户身份验证。 我的用户通过GET URL导航,例如“/company/index.xhtml?companyId=327” 我已启用编程登录,遵循BalusC的指南[2]: SavedRequest savedRequest = WebUtils.getAndClearSavedRequest(Faces.getRequest()); 我的问题是,savedRequest.getRequestUrl()不包含前面提到的GET

在我的JavaEE应用程序中,我使用ApacheShiro[1]进行用户身份验证。 我的用户通过GET URL导航,例如“/company/index.xhtml?companyId=327”

我已启用编程登录,遵循BalusC的指南[2]:

SavedRequest savedRequest = WebUtils.getAndClearSavedRequest(Faces.getRequest());
我的问题是,savedRequest.getRequestUrl()不包含前面提到的GET参数,当我的案例是带或不带memberme的异步POST时;例如,只返回“/company/index.xhtml”。似乎“FacesAjaxAwareUserFilter”(参见[2])并没有获得参数感知。在同步GET调用中,一切正常

由于使用“FacesAjaxAwareUserFilter”时需要身份验证,因此在shiro重定向后如何获取get参数

[1]


[2] 遵循这篇关于JavaEE和Shiro的伟大文章:

JSF ajax请求被发送到由
生成的URL。但是,默认情况下,这并不完全是包含查询字符串的当前URL,而是默认情况下不包含查询字符串的当前URI

有几种方法可以解决这个问题。最简单但最丑陋的方法是使用JS:

<h:form id="foo">
    ...
</h:form>
<script>document.getElementById("foo").action += "?" + location.search;</script>

JSF ajax请求被发送到由
生成的URL。但是,默认情况下,这并不完全是包含查询字符串的当前URL,而是默认情况下不包含查询字符串的当前URI

有几种方法可以解决这个问题。最简单但最丑陋的方法是使用JS:

<h:form id="foo">
    ...
</h:form>
<script>document.getElementById("foo").action += "?" + location.search;</script>