728x90
세션, 쿠키를 이용한 로그인을 구현하면서 다중서버의 경우 발생하는 세션 불일치문제를 해결하기 위한 세션 클러스터링을 구현하고 테스트한 소스코드를 정리한 포스팅입니다.
GitHub - N1ghtsky0/playground
Contribute to N1ghtsky0/playground development by creating an account on GitHub.
github.com
dependency(build.gradle)
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.boot:spring-boot-starter-mustache'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.session:spring-session-data-redis'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
}
application.yml
spring:
session:
store-type: redis
data:
redis:
host: docker-redis #redis container name
port: 6379
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://docker-mysql:3306/session_redis #mysql container name:mysql expose port
username: root
password: 1234
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
format_sql: true
show_sql: true
server:
servlet:
encoding:
force: true
session 저장소로 레디스를 사용하기 위해서 별다른 설정은 없이 spring.session.store-type=redis로 설정해주면 autoconfigure가 자동으로 설정해준다.
SecurityConfig.java
@EnableWebSecurity
@Configuration
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.csrf(AbstractHttpConfigurer::disable)
.cors(AbstractHttpConfigurer::disable)
.authorizeHttpRequests(request -> request
.anyRequest().permitAll())
.formLogin(config -> config
.loginPage("/login")
.usernameParameter("username")
.passwordParameter("password")
.defaultSuccessUrl("/"))
.logout(config -> config
.logoutSuccessUrl("/")
.deleteCookies("JSESSIONID"));
return http.build();
}
간단한 프로젝트이기에 복잡한 설정 없이 csrf, cors 관련 기능을 모두 비활성화 해주고 로그인, 로그아웃 기능은 시큐리티에서 제공해주는 기능을 사용하였다.
컨트롤러, 엔티티 및 html등의 소스코드는 깃허브 참고바랍니다.
실행 방법은 readme.md 참고바랍니다.
결과
'~2025' 카테고리의 다른 글
git 디렉토리별 계정 설정하기 (0) | 2024.04.30 |
---|---|
SpringBoot 3 + JWT(jjwt 0.12.5) + Spring security (0) | 2024.03.08 |
JWT 에 대한 생각 정리 (0) | 2024.02.29 |
spring data jpa 즉시로딩, 지연로딩 확인해보기 (3) | 2024.02.28 |
스프링 부트 로컬 정적 리소스 사용하기 (WebMvcConfigurer) (0) | 2024.02.21 |