Spring MVC - 重定向自动附加JsessionID

时间:2014-06-24 12:37:16

标签: spring spring-mvc

这是我的处理程序方法,如果会话中的用户属性不为空(他已经登录)将他转发到成功页面,如果没有,则将他重定向到登录页面。

@RequestMapping(value = "/")
public String showHome(HttpSession session) {
    User user = (User) session.getAttribute("user");
    if (user != null) {
        return "success";
    }
    return "redirect:/login";
}

问题是,我第一次访问我的页面时,它会重定向到登录页面,但它会自动在URL末尾添加jssessionId,如下所示:" / login; jsessionid = FC75BC999410329E65785274BF0EB623"。更改它以返回"登录"。

时没有问题

2 个答案:

答案 0 :(得分:0)

在tomcat 7中,在tomcat_home/web.xml

中进行此更改
<session-config>
    <tracking-mode>COOKIE</tracking-mode>
</session-config>

答案 1 :(得分:0)

我通过重写strictHttpFirewall来解决此问题,允许使用分号。

这不是理想的解决方案,但是我找不到防止Spring(或者它是tomcat?)将jsessionid附加到重定向网址的方法

 @Configuration
    @EnableWebSecurity
    public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

         .......

        @Bean
        public HttpFirewall allowSemicolonHttpFirewall() {
            StrictHttpFirewall firewall = new StrictHttpFirewall();
            firewall.setAllowSemicolon(true);
            return firewall;
        }