I have this sample application:
package com.example.session; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication public class DemoRedisDataSessionApplication { @Configuration @EnableWebSecurity @EnableRedisHttpSession(redisNamespace = "demo-redis-data-session") public static class AppConfiguration extends WebSecurityConfigurerAdapter { @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication().withUser("user").password("0000").roles("USER"); } @Override protected void configure(HttpSecurity http) throws Exception { http.formLogin().and() .authorizeRequests().antMatchers("/ping").permitAll().and() .authorizeRequests().anyRequest().fullyAuthenticated(); } } @RestController public static class AppController { @GetMapping("/ping") public String ping() { return "pong"; } @GetMapping("/secured") public String secured() { return "secured"; } } public static void main(String[] args) { SpringApplication.run(DemoRedisDataSessionApplication.class, args); } }
When I clicked /secured , I get 302 redirected to the /login form, and this is what I expect if I have not logged in, but I get some unwanted entries in Redis:
127.0.0.1:6379> keys * 1) "spring:session:demo-redis-data-session:sessions:expires:dbb124b9-c37d-454c-8d67-409f28cb88a6" 2) "spring:session:demo-redis-data-session:expirations:1515426060000" 3) "spring:session:demo-redis-data-session:sessions:dbb124b9-c37d-454c-8d67-409f28cb88a6"
I donβt want to create this data for every anonymous user (reading crawler), so is there a way to prevent these Redis entries from entering a secure endpoint / page with an anonymous user?
Additional data used for this example project
docker-compose.yml
version: "2" services: redis: image: redis ports: - "6379:6379"
Spring Boot Version
1.5.9.RELEASE
source share