본문 바로가기

Java/Spring Boot31

검색 이력 저장 시 시간 저장 문제 해결 Spring Boot v2.7.18, Mybatis, MariaDB 환경에서 개발하던 중 발생한 문제 검색 이력 저장 시 milliseconds 단위까지 저장되지 않음(24.03.14) 문제 검색 이력을 담는 테이블의 Mapper를 JUnit5로 테스트 하던 중 검색 이력 저장 시 milliseconds 단위까지 저장되지 않는다는 것을 발견했습니다. 현재 사용자의 login_id와 검색 시간인 search_date 두개의 컬럼을 PK로 사용하고 있고, search_date가 milliseconds 단위까지 포함해야 데이터 중복이 일어나지 않기 때문에, milliseconds 단위의 저장은 필수로 이루어져야 합니다. 해결 과정 알고보니 DB별로 TIMESTAMP 타입의 사용법이 달랐고, MariaDB의 T.. 2024. 3. 19.
페이지네이션 구현 시 onClick 함수 호출 오류(24.03.14) 문제 도로명주소 검색 페이지인 search.html에서 도로명 주소 검색결과 리스트의 pagination을 JavaScript를 이용해서 동적으로 구현하고 있고, pagination 요소에 검색결과를 호출하는 함수인 roadAddrApi와 매개변수인 페이지번호,검색어를 OnClick Event로 전달하려고 했으나, 전달되지 않고 다음과 같은 오류가 발생하였음 “Uncaught ReferenceError: 강남대로 is not defined at HTMLAnchorElement.onclick ((index):1:15)” 해결 과정 Chrome의 개발자 도구로 확인했을 때, 검색어 글자는 제대로 들어가는 것을 확인하였습니다 이 오류에 대해 검색해보니 변수가 그대로 들어가는 문제임을 알게 되었습니다. 그래서 .. 2024. 3. 19.
Spring Security CSRF 적용하기(With Thymeleaf) Security Config의 @EnableWebSecurity 어노테이션을 통해 csrf 토큰처리가 자동으로 이루어진다. @Configuration @EnableWebSecurity @EnableMethodSecurity @RequiredArgsConstructor public class SecurityConfig { 현재 view 단을 Thymeleaf v3.0.15를 통해 처리중인데 Thymeleaf 를 사용하는 경우 손쉽게 csrf 처리를 할 수 있다. CSRF 적용 후 Logout 404 error 발생 문제 : csrf공격 처리를 위해 SecurityConfig에 csrf.disable()코드를 지우고 csrf설정을 활성화했더니, 기존의 a태그로 “/logout”경로로 요청을 보내서 처리하는 .. 2024. 3. 17.
도로명 주소 API 구현 { "common": { "totalCount": "75", "currentPage": "1" }, "juso": [ { "roadAddr": "서울특별시 서초구 강남대로12길 6 (양재동)", "jibunAddr": "서울특별시 서초구 양재동 326-1" }, { "roadAddr": "서울특별시 서초구 강남대로12길 8 (양재동)", "jibunAddr": "서울특별시 서초구 양재동 326-2 성경빌딩" }, { 2024. 3. 13.
InteliJ test 설정 설정이 Gradle로 되어있으면 test 로딩속도가 느릴 수 있다, InteliJ IDEA로 둘 다 변경해준다 2024. 1. 5.
SPRING SECURITY with JWT 토큰기반 인증이란? 토큰 기반 인증은 인증에 토큰을 사용하는 방식이다. 토큰은 클라이언트를 구분하는데 사용하는 유일한 값, 서버에서 생성해서 클라이언트에게 제공한 뒤, 클라이언트는 서버에 요청할 때마다 요청 내용과 토큰을 전송한다. 서버는 토큰으로 유효한 사용자인지 검증한다. JWT는 토큰 기반인증에서 주로 사용하는 토큰 중 하나이다. 헤더,내용,서명 구조로 이루어져있다. 리프레시 토큰은 액세스 토큰이 만료되었을 때 새로운 액세스 토큰을 발급하는 용도로 사용한다. Security Context는 인증 객체가 저장되는 보관소로, 인증 정보가 필요할 때 언제든지 인증 객체를 꺼내어 사용하도록 제공되는 클래스이다. 이것을 저장하는 객체가 Security Context Holder이다. jwt라이브러리 중 가장.. 2023. 12. 5.