我在
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发布时,似乎仍然没有明确的方法来实现这一点.