[SPRING] Spring 4에서 관계형 데이터베이스 기반 HTTP 세션 지속성을 수행하려면 어떻게해야합니까?
SPRINGSpring 4에서 관계형 데이터베이스 기반 HTTP 세션 지속성을 수행하려면 어떻게해야합니까?
여러 프런트 엔드 서버에서 프런트 엔드 사용자의 상태 비 저장 부하 분산을 수행하기 위해 관계형 데이터베이스에 HTTP 세션을 저장할 수 있어야합니다. 스프링 4에서 어떻게 이것을 할 수 있습니까?
어떻게하면 Redis에서이 작업을 수행 할 수 있는지 알 수 있습니다. 그러나 관계형 데이터베이스를 사용하여이를 수행하는 방법에 대한 문서는 보이지 않습니다. Postgres.
해결법
-
==============================
1.Spring Session (투명하게 Java EE의 HttpSession을 오버라이드)을 사용하면 SessionRepository 인터페이스를 가져 와서 사용자 정의 예와 함께 구현할 수 있습니다. JdbcSessionRepository. 그것은 일종의 쉽습니다. 구현이 완료되면 수동으로 (@EnableRedisHttpSession annotation이 필요하지 않음) 필터를 작성하여 필터 체인에 추가하십시오.
Spring Session (투명하게 Java EE의 HttpSession을 오버라이드)을 사용하면 SessionRepository 인터페이스를 가져 와서 사용자 정의 예와 함께 구현할 수 있습니다. JdbcSessionRepository. 그것은 일종의 쉽습니다. 구현이 완료되면 수동으로 (@EnableRedisHttpSession annotation이 필요하지 않음) 필터를 작성하여 필터 체인에 추가하십시오.
@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); } }
SessionRepository 인터페이스가 어떻게 생겼는지 살펴 보겠습니다. 구현할 수있는 방법은 4 가지뿐입니다. Session 객체를 생성하는 방법은 MapSessionRepository 및 MapSession 구현 (또는 RedisOperationsSessionRepository 및 RedisSession)에서 확인할 수 있습니다.
public interface SessionRepository<S extends Session> { S createSession(); void save(S session); S getSession(String id); void delete(String id); }
예제 솔루션 https://github.com/Mati20041/spring-session-jpa-repository
-
==============================
2.스프링 세션을 그냥 치면 완료됩니다. Redis 클라이언트 빈을 추가하고 @EnableRedisHttpSession을 사용하여 구성 클래스에 주석을다는 것은 모두 필요한 것입니다.
스프링 세션을 그냥 치면 완료됩니다. Redis 클라이언트 빈을 추가하고 @EnableRedisHttpSession을 사용하여 구성 클래스에 주석을다는 것은 모두 필요한 것입니다.
from https://stackoverflow.com/questions/31396362/how-can-i-do-relational-database-based-http-session-persistence-in-spring-4 by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring Hibernate 사용시 문제들 (0) | 2019.02.03 |
---|---|
[SPRING] 하위 프로젝트 / 구성 요소의 Spring 버전 행렬이 있습니까? (0) | 2019.02.03 |
[SPRING] 기본 Spring MVC 설정 : InternalResourceViewResolver를 사용하는 PageNotFound (0) | 2019.02.03 |
[SPRING] Servlet 3 @WebServlet과 async를 Spring MVC 3와 함께 사용하는 방법? (0) | 2019.02.03 |
[SPRING] Spring을 통해 서버 모드에서 H2 데이터베이스 시작하기 (0) | 2019.02.03 |