Z sesją wiosenną (przezroczyście zastąpi HttpSessions z Java EE) można po prostu wziąć interfejs SessionRepository
i zaimplementować go z niestandardowym ex. JdbcSessionRepository
. Jest to łatwe do zrobienia. Gdy masz implementację, a potem po prostu dodać ręcznie (nie trzeba @EnableRedisHttpSession
adnotacji) utworzona filtr filtrować łańcuch, jak poniżej:
@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);
}
}
Tutaj masz jak SessionRepository
interfejs wygląda. Ma tylko 4 metody do wdrożenia. Aby dowiedzieć się, jak utworzyć obiekt Session, można zajrzeć do implementacji MapSessionRepository
i MapSession
(lub RedisOperationsSessionRepository
i RedisSession
).
public interface SessionRepository<S extends Session> {
S createSession();
void save(S session);
S getSession(String id);
void delete(String id);
}
Przykład rozwiązania https://github.com/Mati20041/spring-session-jpa-repository
Możliwe duplikat: http://stackoverflow.com/questions/20507749/how-can-i-make-the-spring-security-stores-the-http-session -in-database-so-i-can – bphilipnyc