Back-End/백엔드 관련 정리 23

[Spring Rest Docs] - Spring Rest Docs 적용 중 발생한 오류에 대처하기

[Error] java.lang.IllegalArgumentException: urlTemplate not found. If you are using MockMvc did you use RestDocumentationRequestBuilders to build the request?' import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.get; ResultActions result = mockMvc.perform(get("/api/service/products/{productId}", ID) .with(csrf()) .contentType(MediaType.APPLICATION_JSON)); MockMvc...

spring boot 3.X.X 이상 버전 사용과 queryDsl 설정

기본적으로 스프링부트 3버전 이상은 javax가 아닌 jakarta가 관리하기 때문에 이에 맞게 pom(maven기준) 설정을 해주어야 한다. com.querydsl querydsl-apt ${querydsl.version} provided jakarta com.querydsl querydsl-jpa ${querydsl.version} jakarta jakarta.annotation jakarta.annotation-api jakarta.persistence jakarta.persistence-api classfier 설정에 jakarta를 넣어주고 사용해야 한다. (기본 값이 javax이기 때문에 entity를 못읽는등의 문제로 q class 생성이 안 되고 JPAQueryFactory 빈등록 시에 엔..

querydsl q class 생성과 관련된 문제 해결 - 부제: 우리는 버전 호환을 잘 보아야 한다.

https://github.com/querydsl/querydsl/issues/3296 Are there plans to support SpringBoot3.0(Java17)? · Issue #3296 · querydsl/querydsl Are there plans to support SpringBoot3.0(Java17)? github.com Q class 생성이 안 되는 문제 발생! 소스 루트로 설정을 해주었는가? -> o 쿼리 dsl 관련 의존성을 추가해주었는가? -> o 그렇다면 버전과 관련한 이슈가 아닐까? 스프링부트 3.x.x 버전을 사용하고 jdk17을 쓰고 있어서 이와 관련해서 찾아보니 다음과 같은 결과가 도출되었다 ~ com.querydsl querydsl-apt ${querydsl.ve..

security Error 처리 - 부제: 너두 할 수 있어!

[git oauth2 rest api 인증 처리 중 발생 오류에 대한 대처법] 1. 401 unauthorized error 해결 1-1) 문제 상황 : 해당 오류가 발생하고 구글에 찾아본 결과 로직에는 문제가 없으나 유효한 인증 자격이 없어서 이를 서버측에서 처리해주지 못한다고 나왔다. 1-2) 해결법 : 이를 처리하기 위해서 git에서 제공하는 공식 DOC을 보았고 이 양식에 맞게 코드를 고쳐주었다. https://docs.github.com/ko/developers/apps/building-oauth-apps/authorizing-oauth-apps Authorizing OAuth Apps - GitHub Docs GitHub's OAuth implementation supports the stan..

spring security - 필터

주요 필터들 ChannelProcessingFilter redirect to a different protocol (http → https) SecurityContextPersistenceFilter SecurityContext 객체를 SecurityContextHolder에 저장 어디에 저장? SecurityContextRepository (default: HttpSession) 요청 처리가 끝나면 제거 ConcurrentSessionFilter 현재 Session 유효 여부 파악하여 유효하지 않은 세션에 대한 후처리 SessionManagementFilter와 연동 처리 HeaderWriterFilter 현재 요청에 HTTP Header 추가 Ex.) Cache-Control X-Content-Typ..

인증(2) - 쿠키와 세션

로그인 유지를 위한 세션 사용(쿠~키와 세~션) 세션은 브라우저를 종료하고 다시 시작할 때 찾아갈 실마리가 없음 이를 해결하기 위해서 쿠키에 세션 id를 저장해준다. 세션을 사용해서 정보를 저장하는 경우는 매번 반복해서 작업할 필요 없는 경우들이 있다...(로그인 유지 등..) 쿠키에 세션 id를 저장하고 expire time을 주고 이 시간만큼 세션이 다시 찾아갈 수 있는 실마리를 줄 수 있도록 한다. 쿠키 개인적인 정보는 남기지 않는다. 세션 id를 주고 expire time을 넣어서 해당 세션이 브라우저를 종료시켜도 이 아이디를 참고로 할 수 있게 한다. 세션 로그인 아이디와 같은 중요 정보를 쿠키를 사용하지 않고 세션을 사용해서 로그인 정보를 남겨서 stateless 상태의 http가 아닌 지속 ..

인증(1) - 단방향 해시 함수의 다이제스트

인증과 인가 로그인 = 인증, 인가 인증 = 내가 그에 대한 자격이 있는지를 확인(주체를 확인) 단방향 해시의 다이제스트 해시 해시값 해시코드 다이제스트 -> 위의 네개는 모두 같은 말 해시를 사용하는 이유? 단방향 해시의 경우 고정된 크기를 가지고있어서 그것으로 변환되기 때문에 빠른검색에 유리하다.(원문이 매우 큰 수여도 이를 고정적 길이로 변환시켜줌) 이 경우 원문의 손실이 있기 때문에 해시로 저장한 경우라면 원문으로 복귀 시킬 수 없다.(원문 손실이 이미 있기 때문) 이런 경우 데이터베이스가 털려도 비밀번호는 원문으로 돌아갈 수 없기 때문에 안전하다. 단방향 해시 함수 vs 암호화 알고리즘 - 단방향 해시 함수의 경우엔 단방향이라서 복호화가 불가 - 암호화의 경우엔 암호화와 복호화 작업이 모두 가능..

[javascript][open data] - 공공포털 데이터를 사용해보자

[공공데이터를 사용해 데이터를 출력해보자] 간단한 소개 javascript(사용 언어) ajax 통신(+javaScript) ajax는? 'JavaScript를 사용한 비동기 통신, 클라이언트와 서버간에 XML 데이터를 주고받는 기술' ajax를 사용한 이유는? 자바스크립트를 사용해서 xml 데이터를 사용한 통신을 했기 때문 xml 데이터 사용(공공데이터, json은 또 다르게 사용하는 방법이 있다. 아니면 xml을 json으로 파싱해서 사용하는 방법도 존재한다.) ajax와 xml parsing 사용해 데이터를 사용했다.(결과적으로 보면) [공공데이터 api 인증키 받기] 해당 부분은 많은 블로그에 있기 때문에 넘어간다. [html] 코로나 19 현황(ajax 사용 구현) 날짜 일별 확진자 총 확진자(..