使用Spring Session和Spring Security为访客用户存储购物车

时间:2018-12-02 20:52:54

标签: spring-boot spring-security e-commerce spring-session

我是春季会议和春季安全的新手。我正在开发一个电子商务应用程序。我的应用程序将不会登录用户。因此,每当一个用户登陆我的应用程序时,我都需要为此用户创建一个会话,并且每当该用户将商品添加到购物车中时,它都应存储在会话中。在结帐时,我会将这个购物车商品存储到我可以通过使用HTTPsession的servlet来实现此功能,但是据我所知使用httpsession并不是一个好习惯。所以我打算在spring session和spring security中实现它。我的问题是我没有经过身份验证的用户,是否有可能春季安全性为匿名用户创建会话。我正在使用HeaderHttpSessionStrategy

例如,我正在从应用程序中调用“ localhost:8080 / token”,该应用程序将创建会话ID并将其发送到client.i将响应会话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();
    }

}

0 个答案:

没有答案