ApacheShiro:用户在AJAX中进行身份验证,如何在登录后恢复GET变量?
在我的JavaEE应用程序中,我使用ApacheShiro[1]进行用户身份验证。 我的用户通过GET URL导航,例如“/company/index.xhtml?companyId=327” 我已启用编程登录,遵循BalusC的指南[2]: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
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>