Spring 22

[Spring] JwtUtil 클래스란? | JwtUtil 역할 | JwtUtil 구현

JwtUtil의 주요 역할JWT 생성사용자의 ID, 이메일, 권한 등의 정보를 포함하는 JWT를 생성JWT는 클라이언트로 전달, 이후 요청에서 사용됨JWT 파싱 및 검증클라이언트가 제공한 JWT를 파싱하여 토큰에 포함된 정보 추출서명을 검증해 토큰이 변조되지 않았는지 검증토큰의 유효 시간과 만료 시간을 확인JWT 관리HTTP 요청 헤더에 Bearer 접두사를 제거하여 순수한 JWT를 추출JWT를 기반으로 사용자 정보를 확인하여 인증 및 권한 처리 JwtUtil 코드@Componentpublic class JwtUtil { private static final String BEARER_PREFIX = "Bearer "; private static final long TOKEN_TIME = 60 ..

Spring 2024.11.22

[트러블슈팅] localhost:63342 오류 | localhost:63342 웹소켓 연결 안됨 | localhost:63342 연결 안됨

1. 문제 정의인텔리제이로 바로 브라우저로 들어갈 수 있는 아이콘을 클릭하여 브라우저로 접속하면 localhost:63342 포트로 접속됨.localhost:63342 포트에서 지속적으로 웹소켓 연결 테스트와 로그인이 진행되지 않음.  2. 사실 수집근본적으로 해결하는 방법을 찾지 못해서 콘솔에 있는 오류들을 모두 해결해보려고 코드도 고쳐봤지만,결국 돌아오는 건 똑같이 웹소켓 연결 안됨 + 로그인 안됨 오류.  3. 원인 추론 근본적으로 DB와 연결이 되지 않는다는 것을 확인.내 DB는 8080 포트로 로컬에 연결되어 있는데 지금 연결된 포트는 63342니, DB에 있는 내용을 불러올 수 없음.  4. 조치 및 방안 검토HomeController를 만들어 html 파일을 8080으로 접속하는 방안을 선택..

Spring 2024.11.05

[Spring Boot] WebSocket 사용법 | 웹소켓 사용법 | 웹소켓 실시간 알림 | 웹소켓 프론트 | 웹소켓 테스트하는 법 | 웹소켓 html

** 실시간 알림 구현의 6가지 방법 ** 1. WebSocket설명: WebSocket은 클라이언트와 서버 간의 양방향 통신을 제공하는 프로토콜입니다. 한 번 연결이 맺어지면 서버에서 클라이언트로 실시간으로 데이터를 푸시할 수 있습니다.장점:양방향 통신이 가능해 실시간 상호작용에 적합.서버에서 클라이언트로 즉시 알림 전송이 가능.단점:서버와 클라이언트 간의 지속적인 연결을 유지해야 하므로 서버 자원을 많이 소모할 수 있음.사용 예시: 채팅 애플리케이션, 실시간 알림 시스템.2. Server-Sent Events (SSE)설명: SSE는 서버에서 클라이언트로 일방향 통신을 위한 기술입니다. HTTP 연결을 유지한 상태에서 서버가 클라이언트에게 데이터를 전송할 수 있습니다.장점:HTTP 기반이므로 방화벽이..

Spring 2024.10.29

[Spring] Spring Security 테스트 코드 401 에러 | Spring Security 테스트 코드 401 에러 해결법

스프링 시큐리티를 적용하고 나서 TodoController를 이렇게 작성해주었다.@WebMvcTest(TodoController.class)class TodoControllerTest { @Autowired private MockMvc mockMvc; @MockBean private TodoService todoService; @MockBean private JwtUtil jwtUtil; @Test void todo_단건_조회에_성공한다() throws Exception { // given long todoId = 1L; String title = "title"; CustomUserDetails authUser ..

Spring 2024.10.06

[Spring] 스프링 카카오 소셜 로그인 구현 | 깃 카카오 소셜 로그인 코드

일단 카카오 서비스에서 내 어플리케이션 하나를 만들어주세요.그에 관한 내용은 저번에 작성한 블로그 링크를 걸어둘테니 참고해주세요.https://kimslab01.tistory.com/44 [Spring] 소셜로그인 연동 | 카카오 로그인 | 카카오 사용자 정보 가져오기 | 카카오 사용자 정보로https://developers.kakao.com/ Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.com카카오 디kimslab01.tistory.com   저는 이번에Redirect URI에다가 이런 식으로 값을 넣어주었습니다.    코드를 길게 쭉 적어도 좋지만 ..

Spring 2024.09.25

[Spring] 컨테이너 및 도커 개념정리

1. 컨테이너란?소프트웨어는 OS와 라이브러리에 의존성을 띕니다. 그러므로 하나의 컴퓨터에서 성격이 다른 소프트웨어를 한번에 실행할 때 어려움을 가질 수 있고 관련된 구성을 관리하기가 어렵습니다.컨테이너는 개별 소프트웨어의 실행에 필요한 실행환경을 독립적으로 운용할 수 있도록 기반환경 또는 다른 실행환경과 간섭을 막고 실행의 독립성을 확보해주는 운영체계 수준의 격리 기술을 말합니다.컨테이너는 애플리케이션을 실제 구동 환경으로부터 추상화할 수 있는 논리 패키징 매커니즘을 제공합니다.   2. 컨테이너와 가상머신(VM)의 차이 가상머신 또한 독립적인 실행환경을 구성할 수 있도록 도와줍니다. 두 차이를 살펴보면, 가상머신HyperVisor가 있습니다. 이는 컴퓨터가 가지고 있는 인프라 리소스들에 대해 VM별로..

Spring 2024.09.19

[Spring] 소셜로그인 연동 | 카카오 로그인 | 카카오 사용자 정보 가져오기 | 카카오 사용자 정보로 회원가입 구현

https://developers.kakao.com/ Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.com카카오 디벨로퍼스 사이트를 이용해 카카오 로그인을 사용할 수 있도록 하겠습니다!    저는 그냥 이름 대충 반달곰으로 해줬습니다 ㅋㅋㅋㅋ아이콘 설정을 안했더니 앱 등록이 안되서 저번에 쓴 스프링 르탄이 이모티콘을 사용해주었습니다.이렇게 설정을 마치면 비즈니스 - 개인 개발자 비즈 앱으로 설정이 가능합니다.개인 개발자 비즈 앱 전환을 눌려줍니다. 이메일 필수 동의를 위해서 하는 거라 저렇게 설정해주고 전환해줄게요! 카카오 로그인으로 들어가서 로그인을 활..

Spring 2024.09.18

[Spring] Controller 테스트 코드 작성하기

1. @WebMvcTest여러 스프링 테스트 어노테이션 중 Web(Spring MVC)에 집중할 수 있는 어노테이션@SpringBootTest는 모든 빈을 로드하기 때문에 Controller 레이어만 테스트하고 싶다면 @WebMvcTest를 사용하는 것을 권장선언할 경우 밑의 내용만 스캔하도록 제한@Controller@ControllerAdvice@JsonComponentConverter / GenericConverterFilterWebSecurityConfiguerAdapterWebMvcConfiguerHandlerMethodArgumentResolver   2. MockMvc스프링 MVC 테스트의 시작점이 클래스를 통해 HTTP의 GET, POST, PUT, DELETE에 대한 API 테스트가 가능 ..

Spring 2024.09.13

[Spring] AOP 관점지향 프로그래밍 | 횡단 관심사 분리

a. aspect 만들기@Slf4j@Aspect/** * 애스팩트: 어드바이스와 포인트컷을 하나로 묶은 모듈 */public class AspectPractice { // 포인트컷 // 어드바이스 위치}  AOP 등록@Configurationpublic class WebConfig { @Bean public AspectPractice getAspectPracticeAop() { return new AspectPractice(); }}    b. 패키지 범위 기반 포인트컷 만들기 /** * 포인트컷: 서비스 패키지 기반 */ @Pointcut("execution(* com.standard.sparta.service..*(..))") pr..

Spring 2024.09.10