gpt4 book ai didi

spring - 如何将请求参数传递给 'default-target-url'

转载 作者:行者123 更新时间:2023-12-03 01:47:54 26 4
gpt4 key购买 nike

我在 login.jsp 页面的隐藏字段中设置“cat=1”,并期望它在 default-target-url 上可用。 spring-security.xml 中的条目是,

<form-login login-page="/login.html" default-target-url="/index.html"
authentication-failure-url="/loginfailed.html" />

在 Controller 中,

@RequestMapping(value="/index", method = RequestMethod.GET)
public String index(HttpServletRequest request) {
String cat = request.getParameter("cat");
if (cat != null && cat.equalsIgnoreCase("1")) {
return "add";
}
return "redirect:/index.jsp";
}

但无法获取请求参数值(cat 为空),所以我相信这是因为“default-target-url”重定向了请求(并且不转发它?)。是这样吗?

如果是,那么有什么方法可以将参数传递给“default-target-url”?

最佳答案

我稍微改变了实现方法。详细信息如下,

spring-security.xml

<form-login login-page="/login.html" authentication-success-handler-ref="feedSuccessHandler"
authentication-failure-url="/loginfailed.html" />
<logout logout-success-url="/loggedout.html"/>

<beans:bean id="feedSuccessHandler"
class="main.java.com.sp.utilities.FeedSuccessHandler">
</beans:bean>

FeedSuccessHandler.java

public class FeedSuccessHandler implements AuthenticationSuccessHandler {

public void onAuthenticationSuccess(HttpServletRequest request,
HttpServletResponse response, Authentication authentication)
throws IOException, ServletException {

String cat = request.getParameter("cat");
if (cat != null && cat.equalsIgnoreCase("1")) {
response.sendRedirect(request.getContextPath()+"/add.html");
}else{
SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request, response);
if(savedRequest != null) {
response.sendRedirect(savedRequest.getRedirectUrl());
}else{
response.sendRedirect(request.getContextPath()+"/");
}
}
}
}

应用程序将来也可以按需要工作,如果我想根据角色自定义重定向,我可以使用相同的类。

关于spring - 如何将请求参数传递给 'default-target-url',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14959913/

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