gpt4 book ai didi

java - 将查询参数传递到下一页

转载 作者:行者123 更新时间:2023-12-01 16:42:25 24 4
gpt4 key购买 nike

<beans:bean id="successHandler" class="org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler">
<beans:property name="defaultTargetUrl" value="/order.htm"/>
<beans:property name="alwaysUseDefaultTargetUrl" value="true"/>
</beans:bean>

嗨,我有一个像上面这样的成功处理程序。当用户使用查询参数登陆登录页面时,我需要在登录后页面上保留查询参数。我怎样才能做到这一点?我设法在对用户进行身份验证的 successfulAuthentication 方法中看到请求参数。唯一的挑战是如何将相同的查询参数传递到下一页像下面这样的东西?或者还有其他更好的方法吗?

<beans:property name="defaultTargetUrl" value="/order.htm?paramTest=pp1"/>

编辑 SavedRequestAwareAuthenticationSuccessHandler 能够保留以前的 url(在本例中为带有查询参数的 url),但我将 defaultTargetUrl 设置为新的 url,这就是它无效的原因。是否有可能使用上一个登录页面的查询参数构建新的defaultTargetUrl?

最佳答案

我设法重写 SavedRequestAwareAuthenticationSuccessHandler 来实现相同的效果

public class CustomSavedRequestAwareAuthenticationSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler {

private final Logger logger = ResmedLogger.getInstance().getTraceLogger();

@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
Authentication authentication) throws ServletException, IOException {
HttpSession session = request.getSession();
if (session != null) {
String paramTest = (String) session.getAttribute("paramTest");
logger.info("paramTest="+paramTest);
if (paramTest != null) {
// we do not forget to clean this attribute from session
session.removeAttribute("paramTest");
// then we redirect
getRedirectStrategy().sendRedirect(request, response, "/order.htm?paramTest="+paramTest);
} else {
super.onAuthenticationSuccess(request, response, authentication);
}
} else {
super.onAuthenticationSuccess(request, response, authentication);
}
}

}

关于java - 将查询参数传递到下一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61837391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com