spring-mvc – Spring安全无效会话重定向

我在
spring boot 1.2.3 web应用程序中使用spring security 4.0.1(并且还使用spring-session 1.0.1,但这与案例无关).

我有一个私人区域,以及每个用户都可以访问的所有访问区域(“/ about”,“/”,“/ contact”,…超过20页). (它就像一个网店)

每当登录的用户会话到期时,Spring都会检测到无效会话并将用户重定向到’.invalidSessionUrl(“/ session / error / invalid”)’

但是,如果目标链接在私有区域内,也不是公共区域,我只想重定向.

我怎么能避免这种情况?

谢谢.

这是我的(java)配置:(见过帖子后更新)

 http
            .authorizeRequests()
            .anyRequest()
                .permitAll()
            .antMatchers("/privado/**")
                .authenticated()
            .and()
                .formLogin()
                .loginPage("/login")
                .failureUrl("/login?error")
                .defaultSuccessUrl("/")
                .successHandler(new SessionSuccessHandler())
            .and()
                .logout()
                .logoutSuccessUrl("/")
                .deleteCookies("JSESSIONID", "SESSION")
            .and()
                .sessionManagement()
                .invalidSessionUrl("/session/error/invalid")
            .sessionFixation()
            .changeSessionId()
            .maximumSessions(1)
            .expiredUrl("/session/error/expired")
            .and()
            .and()
                .csrf()
                .ignoringAntMatchers("/jolokia/**", "/v1.0/**");

我怎样才能实现这一目标?

非常感谢.

最佳答案 @RobWinch – 这看起来像一个非常常见的用例,你提出的解决方案似乎不适用于我运行的测试和评论.提出类似的问题我相信在
http://forum.spring.io/forum/spring-projects/security/94772-redirect-to-invalid-session-url-only-when-user-accesses-secured-resource,它似乎从未解决.我的想法是有多个http设置(使用xml配置)

<http pattern="/aboutUs**" security="none" />
<http pattern="/contact**" security="none" />
etc

当拥有相当多的不安全页面并且添加新的不安全页面时,这似乎并不理想,需要进行配置更新.如果我们能够为这个用例提供“理想”的解决方案,那就太好了.在Spring Security 4.1发布时,似乎仍然没有明确的方法来实现这一点.

点赞