我正在为一个学校项目使用jsp和spring创建一个web商店。该网站必须是可用的,而不被连接(除了支付),所以我可以添加到我的购物车项目,即使我没有连接。购物车中的项目保存为会话属性。
我的问题是,当用户已连接并且购物车中有项目时,如果他注销,所有会话属性都将被删除,因此购物车将被清除。对于拥有多个帐户(即专业帐户和私人帐户)并希望切换另一个帐户进行支付的用户来说,这是不实际的。
有没有办法在注销后保留某个会话属性?
下面是如何在jsp页面中调用注销:
<a href="<spring:url value='/logout'/>">
<spring:message code='logout'/>
</a>
这是SpringSecurity的默认调用。
这是我的安全配置( WebSecurityConfiguration.java
) :
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http
.authorizeRequests()
.antMatchers(AUTHORIZED_REQUESTS_ADMIN).hasRole("ADMIN")
.antMatchers(AUTHORIZED_REQUESTS_ANYBODY).permitAll()
.antMatchers(STATIC_RESOURCES).permitAll()
.anyRequest().authenticated()
.and()
.formLogin() // We define the login part here.
.successHandler(new SavedRequestAwareAuthenticationSuccessHandler())
.loginPage(LOGIN_REQUEST)
.defaultSuccessUrl("/home")
.failureUrl("/error.jsp")
.permitAll()
.and()
.logout()
//.logoutUrl("")
.logoutSuccessUrl("/home")
.permitAll();
}
谢谢你的帮助
1条答案
按热度按时间kb5ga3dv1#
我找到了一个解决办法(就在我眼皮底下):加上
.invalidateHttpSession(false)
在configure
功能似乎是我想要的。我的
WebSecurityConfiguration.java
现在看来:谢谢你们的帮助