Junobee25 / pre-order-service

소셜 미디어 플랫폼 API 개발 프로젝트
1 stars 0 forks source link

MSA 전환을 위한 사전 학습 #34

Open Junobee25 opened 8 months ago

Junobee25 commented 8 months ago

Image

Image

Junobee25 commented 8 months ago

Rest API, GraphQL, grpc

https://www.popit.kr/graphql-%EA%B7%B8%EB%A6%AC%EA%B3%A0-msa/

Junobee25 commented 8 months ago

gateway-mvc vs gateway-webflux
tomcat vs netty

https://kubernetes.blog/26

Junobee25 commented 8 months ago

시큐리티 기본 logout으로 /auth/logout 사용 중인데 API Gateway사용할수있는지

Junobee25 commented 8 months ago

기존 모놀리식 : login 시 http header에 jwt정보 생성됨 -> jwtauthenticationFilter를 통해 header검사

마이크로 서비스 : login 시 http header에 jwt정보 생성됨 -> api gateway에서 filter를 통해 검증 (기존의 필터는 삭제하고 api gateway 서비스에서만 filter를 해주면됨)

Junobee25 commented 8 months ago

jwt db에는 잘 저장되지만 인증이 안됨 filter에서 loadUserByMail을 잘 못가져오는 문제 그래서 Authentication 이 자꾸 null UserDetails userDetails = userDetailsService.loadUserByUsername(jwtService.getEmail(token)); 에서 아래와 같이 변경 UserAccount userAccount = userAccountService.loadUserByEmail(jwtService.getEmail(token));

이유 💯 사용자 정보를 가져오는 방식은 서비스 레이어에서 다양하게 처리될 수 있습니다. UserDetailsService 인터페이스를 구현하여 Spring Security에서 제공하는 loadUserByUsername 메서드를 사용하는 것은 일반적인 방법입니다. 이렇게 하면 Spring Security와의 통합이 원활해집니다. 그러나 필요에 따라 직접 서비스 레이어에서 사용자 정보를 가져오는 것도 가능합니다.

따라서 userAccountService.loadUserByEmail(jwtService.getEmail(token))과 같이 직접 서비스 레이어의 메서드를 호출하여 사용자 정보를 가져오는 것도 가능합니다. 다만, 이 경우에는 Spring Security와의 통합이 좀 더 수동적으로 이루어져야 하므로 주의가 필요합니다. 또한, 서비스 레이어에서 사용자 정보를 가져오는 메서드를 구현할 때는, 이메일이나 다른 식별자를 기반으로 사용자를 찾고, 그에 맞는 사용자 정보를 반환하는 로직을 구현해야 합니다.