带有无效SessionUrl的Spring Boot WebSecurityConfig LogoutSuccessURL

时间:2019-10-02 14:59:25

标签: java spring-boot session spring-security web-applications

我正在研究Spring Boot项目和用于会话控制的WebSecurityConfig。问题是,当会话期满时,我期望将其重定向到/?sessionexpired,而将我重定向到/?expiredsession。同样,当用户注销时,页面将重定向到/?sessionexpired而不是/?logout

我的配置如下

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http
            .authorizeRequests()
                .antMatchers("/thirdparty/**", "/webjars/**", "/sessionerror").permitAll()
                .anyRequest().authenticated()
                .and()
            .formLogin()
                .loginPage("/")
                .failureUrl("/?error")
                .defaultSuccessUrl("/dashboard")
                .permitAll()
                .and()
            .logout()
                .logoutUrl("/logout")
                .logoutSuccessUrl("/?logout")
                .logoutRequestMatcher(new AntPathRequestMatcher("/logout")) // override default of only allowing POST for logout so we can use a GET
                .deleteCookies("remove")
                .invalidateHttpSession(true)
                .permitAll()
                .and()
            .sessionManagement()
                .maximumSessions(1)
                .expiredUrl("/?expiredsession")
                .maxSessionsPreventsLogin(false)
                .and()
            .invalidSessionUrl("/?sessionexpired");
    }

有人可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

所以我最终想通了。它被重定向到/?sessionexpired,因为在注销时,我通过将其设置为true来使Session无效。我应该将其设置为false,然后使用.deleteCookies("JSESSIONID")使会话无效。这样,它将正确重定向。