본문 바로가기

전체 글

(54)
[스프링부트] LazyInitializationException 지연 로딩 오류 흑..흑...어드민 기능 중 탈퇴 회원을 회원으로 복구하는 로직을 짜다가 DeletedMember로 불러온 List인 DeletedProfile을 불러오는 과정에서 오류 발생 "trace": "org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.example.domain.deleted.entity.DeletedMember.deletedProfiles: could not initialize proxy - no Session ...  [module-admin] → DeletedMember@NoArgsConstructor@Getter@Entity@Table(name = "deleted_me..
[스프링부트] 탈퇴 회원 처리 (Postgres DB 분리, @Scheduled) 탈퇴한 회원 그냥 repository.delete() 했는데 개빡치게 몇 년간 보관해야된다 음... 탈퇴한 유저 데이터에 접근하는 경우가 뭐지 흠. 삭제 회원 데이터 접근할 일 딱히 없을 것 같고.. DB 분리하는게 성능상 이점이 있다 DB 분리module-common → [application.yml]DB를 2개 이상 사용할 경우, 직접 DataSource를 생성해야한다. yml 파일 설정 중 만난 오류: jdbcUrl is required with driverClassName.  HikariCP의 Database URL 설정은 url이 아닌 jdbcUrl을 사용하기 때문에 발생하는 오류로, 대부분의 블로그에서 datasource.url을 datasource.jdbc-url로 변경하라고 추천한다.하지만..
[Spring Cloud Gateway] Admin 로그인 API가 따로 필요한가 ? ? module-admin → [AdminFIlter]@Override public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { String path = exchange.getRequest().getPath().toString(); System.out.println("path = " + path); String authorizationHeader = exchange.getRequest().getHeaders().getFirst("Authorization"); if (authorizationHeader == null || !authorizationHeader.startsWith(..
[Spring Cloud Gateway] module-admin admin 체크하는 필터만들고 .yml파일에 이어서 적용하려니까 너무 길어지고 복잡하다모듈들 관리하기 편하라고 GatewayConfig 새로 만들음  apigateway → [GatewayConfig]@Configurationpublic class GatewayConfig { @Autowired private AdminFilter adminFilter; @Bean public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { return builder.routes() .route("module-common", r -> r.path("/module-common/**") ..
[Springboot + Redis + CoolSms] 회원가입 인증 부분 문제 해결 현재 로직1. User가 회원가입 진행 시 coolSms를 통해 인증코드를 발급받는다.2. redis에 sms:{email} 형식으로 저장되면 data에 발급받은 coolSms로 전송된 인증 코드를 저장한다.3. User가 전송받은 인증코드를 [확인] 버튼을 누를 경우 redis 내의 코드와 비교한다.  → 현재는 보안을 생각해서 이 단계에서 인증 코드를 삭제하지 않고, 회원가입 버튼을 누를 경우 DTO에 인증 코드를 다시 전송하여 회원가입 로직에서 Redis의 인증 코드와 일치하는지 다시 확인한다.→ 인증 코드 검증과 회원가입 버튼을 누르기까지 큰 시간의 차이가 없어서 괜찮을 것 같지만 뭔가 찝찝한게 문제.......  오.!>!>1>!>!!>?!!?~ 귀찮 ㅠ Redis 전화번호 인증 성공 시 1. ..
[Spring Cloud Gateway] 로그아웃 확인 [로그아웃 로직]accessToken과 email을 받음email 값으로 Redis내의 Refresh:{email} 삭제accessToken은 따로 저장되어있는 곳이 없기때문에 로그아웃 처리 시 redis에 logout:{accessToken}으로 저장한다.인가 필터에서 accessToken이 redis의 logout:{accessToken} 으로 저장되어있는지 확인한다.true → Exception 처리  1. module-common → [AuthController]/** * 로그아웃 * 1. Redis내의 refresh_token 삭제 * 2. Redis에 현재 access_token을 logout 상태로 등록 * - 2.1. 해당 access_token의 남은 유효시간..
[Postman] Invisible Character 오류 분명 똑같이 생겼는데 왜 postman에서 위의 url은 오류가 뜨고, 밑에 url은 정상작동할까 . . . ?나는 내가 경로 설정을 잘못한 줄 알고 삽질하고 있었는데,,,,,,,,,,,,,,,,,,,,,,, 이렇게 이렇게 이렇게 이렇게 ?..?.?  path에 '%08' 뜰 때부터 알았어야 했는데 내 시간 내 시간 내 시간 내 시간 내 시간 내 시간 내 시간 내 시간 내 시간 내 시간 내 시간 내 시간 돌려줘 내 시간    구글 검색 엔진에서는 보이네 스페이스바 ^^^ 개빡치네.! ..
[Spring Cloud Gateway] 회원가입, 로그인 라우팅 확인 스프링 클라우드 게이트웨이를 이용하여 만들었던 단일 서버 분리 필요 Eureka를 사용하여 Spring Cloud Gateway와 MODULE_COMMON 인스턴스를 이용하여 인증/ 인가 부분을 분리한다.  SpringBoot 3.3.2 + JPA + Spring Security  [apigateway 폴더 구조]  1. apigateway → [build.gradle]dependencies { implementation 'org.springframework.cloud:spring-cloud-starter-gateway' implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client' implemen..