본문 바로가기

PlayGround43

[1년 후 마실가실] Spring Security - UserDetailsService 1년 전 진행했던 마실가실 프로젝트를 🛠️리팩토링하며 정리한 내용입니다. Security는 끝날 때까지 끝난 게 아닙니다..지금은 그간 놓치고 있던 오류 처리를 해주고 있습니다. 회원 탈퇴 기능을 추가하면서 User 테이블에 IsUsed를 선언해서 flag 처럼 사용하고 있습니다.이제 탈퇴한 회원은 조회가 되면 안되기에 검색 로직에서 IsUsed를 추가해주고 로그인을 테스트해본 것이 가까워진 Security와 멀어진 계기가 되었죠.. 멀어진 Security와 다시 가까워지기 위한 노력을 정리해 보았습니다.. 자.. 이제 문제가 뭐였느냐..회원 정보가 없을 때, 제가 Throw한 Exception과 전달받은 Exception이 달랐습니다.. 준 적이 없는데 누군가는 받은 셈.. LoginFilter.ja.. 2024. 11. 29.
[1년 후 마실가실] SonarQube와 Immutable List 1년 전 진행했던 마실가실 프로젝트를 🛠️리팩토링하며 정리한 내용입니다. (이미지와는 크게 상관없는 내용인데, 귀여워서 넣어봤습니다.) 여러분은 모르셨겠지만, 최근에 얼추 갖춰진 회원 CRUD가 끝났습니다.. 야호..아직도 수정해야할 건 산더미이긴 하지만, 부담갖지 않고 해보고싶은 것들, 궁금한 것들을 위주로 리팩토링을 하자,, 라고 마음을 다지고 있습니다🚀. 지금은 큰 산이라고 생각한 이미지를 시작해보기 전에 코드를 좀 다듬는 중입니다. 그래서 이번에는 조금 간단한 내용으로 정적분석도구 SonarQube를 어떻게 쓰고 있는지를 짧게 남겨보고자 합니다. SonarQube 사용하기 GlobalExceptionHandler.java@Slf4j@RestControllerAdvicepublic class G.. 2024. 11. 22.
[1년 후 마실가실] ExceptionHandlerFilter 1년 전 진행했던 마실가실 프로젝트를 🛠️리팩토링하며 정리한 내용입니다.   Filter에서 Exception 처리가 되지 않아 길을 잃은지 어느덧 한 달..드디어 필터를 활용하여 Exception 처리까지 왔습니다.. 의도치않은 리리팩토링으로 인해 기능 구현은 제자리지만, 포기하지 않으면 과정입니다..파이팅..⭐   그간의 이야기를 잠깐 해보자면, 저에겐 @RestControllerAdvice를 선언한 GlobalExceptionHanlder가 있었습니다(지금도 있습니다^^). GlobalExceptionHanlder는 Controller로 들어온 Exception을 처리하는데, Filter에서 오류가 발생하면 Controller로 들어오지 않아 Exception 처리가 안되던 문제가 있었습니다.. .. 2024. 11. 17.
[1년 후 마실가실] @GeneratedValue(strategy = GenerationType.IDENTITY) 1년 전 진행했던 마실가실 프로젝트를 🛠️리팩토링하며 정리한 내용입니다. 애플리케이션 껐다키면 userId가 50 증가한 썰.. Spring Security를 전체적으로 리리팩토링을 하고 Postman으로 전체적인 동작을 확인하고 있습니다. 그러다 문득, DB에서 UserId값을 보는데, 2000번을 넘었더라고요.내가 Create 메서드를 2000번이나 했으려나..? 라는 생각과 함께 Postman으로 Id값이 제대로 증가하는지 확인해보다 애플리케이션을 껐다 키면 50이 증가해버리는 문제를 발견했습니다. 간단하게 고쳐보는 과정을 남겨봅니다.. Hibernate5부터 MySQL DB로 @GeneratedValue를 사용해서 AUTO를 strategy로 선택하게 되면, GenerationType.TABLE.. 2024. 11. 14.
[1년 후 마실가실] CharacterEncodingFilter 1년 전 진행했던 마실가실 프로젝트를 🛠️리팩토링하며 정리한 내용입니다.  최근에 Security Filter를 리리팩토링하면서 기본 HttpStatus 값을 반환하여, Custom한 Error Code가 쓸 일이 없어졌습니다. 하지만, 쓰라고 만들어둔 것이기에 코드를 조금씩 바꿔서 response에 조심스럽게 담아 고객님께 전달해드렸는데 한글이 출력이 안됩니다. 하지만, 이 곳은 한국.. 한국어가 나와야 합니다.. 검색해서 나온 방법들은 통하지 않아 네이버 블로그와 GPT와 함께 열심히 찾은 결과를 작성해둡니다.. (실패) application.yml전역 설정의 중앙 허브.. application.yml 설정으로 먼저 시작해 봤습니다.spring: servlet: encoding: c.. 2024. 11. 10.
[1년 후 마실가실] Spring Security + JWT - Header 1년 전 진행했던 마실가실 프로젝트를 🛠️리팩토링하며 정리한 내용입니다.  JWT 사용 방식에 대해 알고 계신가요..?공식 문서에서는 Authorization Header에 Bearer를 붙여 토큰을 발해서 보내라, 라고 하고 있습니다. 문득, 제 지난 코드는 Header가 아닌 Body를 쓰고 있다는 사실을 알게 되었고, 그로 인해 토큰 재발급과 로그아웃을 리리팩토링하게 되었습니다. 공식 문서가 시키는대로 완성된 코드를 정리해 보고자 합니다. 1. 로그인LoginFilter.javaSpring Security에서 제공하는 폼을 사용하면 UsernamePasswordAuthenticationFilter를 통해서 로그인 인증이 진행됩니다.저는 별도의 회원가입 양식을 사용하기 때문에 UsernamePass.. 2024. 11. 3.