+-
spring-如何将请求参数传递给’default-target-url’
我在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" />

在控制器中

@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为null),因此我相信这是因为“默认目标网址”重定向了请求(并且不转发它?).是这样吗

如果是,那有什么办法可以将参数传递给“ 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’ - 乐贴网