Con Spring Session (in modo trasparente sovrascrive HttpSessions da Java EE), è sufficiente prendere l'interfaccia SessionRepository
e implementarla con la tua ex personalizzata. JdbcSessionRepository
. È un po 'facile da fare. Quando hai il tuo implementazione, poi basta aggiungere manualmente (non è necessario @EnableRedisHttpSession
annotazione) creato filtro per filtrare la catena, come muggito:
@Configuration
@EnableWebMvcSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
//other stuff...
@Autowired
private SessionRepository<ExpiringSession> sessionRepository;
private HttpSessionStrategy httpSessionStrategy = new CookieHttpSessionStrategy(); // or HeaderHttpSessionStrategy
@Bean
public SessionRepository<ExpiringSession> sessionRepository() {
return new JdbcSessionRepository();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
super.configure(http);
SessionRepositoryFilter<ExpiringSession> sessionRepositoryFilter = new SessionRepositoryFilter<>(sessionRepository);
sessionRepositoryFilter.setHttpSessionStrategy(httpSessionStrategy);
http
.addFilterBefore(sessionRepositoryFilter, ChannelProcessingFilter.class);
}
}
Qui avete come SessionRepository
interfaccia assomiglia. Ha solo 4 metodi da implementare. Per come creare l'oggetto Session, è possibile cercare nell'implementazione MapSessionRepository
e MapSession
(o RedisOperationsSessionRepository
e RedisSession
).
public interface SessionRepository<S extends Session> {
S createSession();
void save(S session);
S getSession(String id);
void delete(String id);
}
soluzione Esempio https://github.com/Mati20041/spring-session-jpa-repository
Possibile duplicato di: http://stackoverflow.com/questions/20507749/how-can-i-make-the-spring-security-stores-the-http-session -in-database-so-i-can – bphilipnyc