Spring boot 使用spring会话和spring security为来宾用户存储购物车

Spring boot 使用spring会话和spring security为来宾用户存储购物车,spring-boot,spring-security,e-commerce,spring-session,Spring Boot,Spring Security,E Commerce,Spring Session,我不熟悉春季课程和春季安全。我正在开发一个电子商务应用程序。我的应用程序将没有登录用户。因此,每当用户登录到我的应用程序时,我需要为此用户创建一个会话,每当用户向购物车添加项目时,它应该在会话中存储。在签出时,我会将此购物车项目存储到数据库中。根据我的知识,我可以通过servlet使用HTTPsession实现此功能使用httpsession不是很好的做法。因此我计划在spring会话和spring security中实现它。我的问题是我没有经过身份验证的用户,所以spring security

我不熟悉春季课程和春季安全。我正在开发一个电子商务应用程序。我的应用程序将没有登录用户。因此,每当用户登录到我的应用程序时,我需要为此用户创建一个会话,每当用户向购物车添加项目时,它应该在会话中存储。在签出时,我会将此购物车项目存储到数据库中。根据我的知识,我可以通过servlet使用HTTPsession实现此功能使用httpsession不是很好的做法。因此我计划在spring会话和spring security中实现它。我的问题是我没有经过身份验证的用户,所以spring security是否可以为匿名用户创建会话。我使用HeaderHttpSession策略

例如,我调用“localhost:8080/token”从我的应用程序创建会话id并发送到我的客户端。我将响应会话id存储在本地存储中,并计划将此会话id作为X-Auth-token从下一个请求发送到我的头。如果这样做,我在安全配置中没有配置任何身份验证,因为我没有登录用户。在实现购物车时,我需要获取此请求标头并将其存储在会话中,以便维护会话,保存购物车并从会话中检索。这会为每个新用户创建新会话吗?或者,如果我没有登录用户,是否可以使用servlet实现HttpSession?。请用这段代码让我知道我的会话是否存储在redis数据库中?请向我建议有效实现我的功能的方法或示例

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private Environment env;

    private static final String[] PUBLIC_MATCHERS = { "/css/**", "/js/**", "/image/**", "/book/**", "/user/**", "/**" };

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable().cors().disable().httpBasic().and().authorizeRequests().antMatchers(PUBLIC_MATCHERS)
                .permitAll().anyRequest().anonymous();

    }

    @Bean
    public HttpSessionStrategy httpSessionStrategy() {
        return new HeaderHttpSessionStrategy();
    }
}
HttpSessionConfig.java

@EnableRedisHttpSession
public class HttpSessionConfig {

    @Bean
    public LettuceConnectionFactory connectionFactory() {
        return new LettuceConnectionFactory();
    }

}

Spring会话为每个用户创建一个会话ID,不管他是否经过身份验证。也许您需要通过此ID将购物车链接到会话。