본문 바로가기

Programming

[jwt] refreshToken을 db에서 유지하는 이유 JWT 인증은 Stateless 원칙을 기본으로한 인증방식 인증서버에서 1회만 발급받으면 해당 토큰이 가진 만료시간이나, 속성들을 사용하여 어플리케이션이 인증서버의 도움없이 인증 및 인가에 사용할 수 있는 방식  JWT로 인증을 받을경우 해당 토큰은 폐기가 불가능 보안문제를 해결하기 위해 다시 Stateful한 방식인 세션과 같이 Token을 DB에 저장하고 로그아웃이나 기타 정책에 의해 Token을 DB에서 삭제하면 유효한 JWT토큰을 가지고 있더라도 인증실패 처리를 할 수 있음  1시간 만료되서 accessToken을 재발급 받으려고 다시 로그인 하면,서버입장에서는database에서 SELECT Member table 도 해야하고,찾은 Member를 UserDetails로 변환해 검증도 해야하고,검증.. 더보기
[Spring] 필터(Filter) vs 인터셉터(Interceptor) 차이 1. 필터(Filter)[ 필터(Filter)란? ]필터(Filter)는 J2EE 표준 스펙 기능으로 디스패처 서블릿(Dispatcher Servlet)에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있는 기능을 제공한다. 디스패처 서블릿은 스프링의 가장 앞단에 존재하는 프론트 컨트롤러이므로, 필터는 스프링 범위 밖에서 처리가 되는 것이다. (디스패처 서블릿에 대해 잘 모른다면 여기를 참고해주세요!)즉, 스프링 컨테이너가 아닌 톰캣과 같은 웹 컨테이너(서블릿 컨테이너)에 의해 관리가 되는 것이고(스프링 빈으로 등록은 된다), 디스패처 서블릿 전/후에 처리하는 것이다. 이러한 과정을 그림으로 표현하면 다음과 같다.     [ 필터(Filter)의 메소드 ]필터를 추가.. 더보기
[Mybatis]insert 구문 실행 후 selectKey 값이 1이 나오는 현상 기존 repository 소스코드 @Repository public class AttachFileRepository4Mybatis { @Autowired private SqlSessionTemplate sessionTemplate; public List insertList(List attachFiles) throws DataAccessException { List attachFileIds = new ArrayList(); for (AttachFileRequestDTO attachFileRequestDTO : attachFiles) { Long result = Long.valueOf(sessionTemplate.insert("attachFile.insert", attachFileRequestDTO)); a.. 더보기
[Spring] QueryDsl의 Q클래스 빨간줄 에러 뜨는현상 방지 인텔리제이 + maven 사용해서 QueryDSL을 설정해봅시다. 필요 라이브러리 querydsl-apt: 쿼리 타입(Q-Class)을 생성할 때 필요 querydsl-jpa: QueryDSL JPA 라이브러리 com.mysema.querydsl querydsl-apt 3.6.3 provided com.mysema.querydsl querydsl-jpa 3.6.3 QueryDsl을 사용하기 위해 필요한 라이브러리는 위와 같습니다. pom.xml을 열어서 안에 추가해주세요. 버전은 사용하시는 환경에 맞게 설정하시면 됩니다. Q Class 생성 플러그인 추가 QueryDSL을 사용하려면 엔티티를 기반으로하는 쿼리용 클래스를 생성해야 합니다. 해당 클래스를 컴파일시 자동으로 생성하기 위해서 플러그인을 추가해주.. 더보기
[Spring] In-Memory DB에 해당되는 H2 DB 사용방법 H2 DB의 3가지 모드 H2DB는 자바 기반 오픈소스 RDBMS(관계형 데이터 베이스 관리 시스템)이다. H2DB Cheat Sheet를 살펴보면 세 가지 용도를 찾을 수 있다. 1. Embedded Mode 2. In-Memory Mode 3. Server Mode Server Mode Server Mode는 공식 사이트에서 H2를 Plafform-Independent 버전을 다운로드하고 h2/bin/h2.sh를 터미널로 실행하면 h2가 TCP 통신을 할 수 있는 서버 버전으로 실행된다고 볼 수 있다. 따라서 외부에서 h2 서버가 실행되어야 스프링에서 application.properties에 h2서버 주소를 입력해 접속할 수 있다. 김영한님의 스프링 입문 강의 섹션 6 : H2 데이터베이스(무료강.. 더보기
[Java] K번째 수 구하기 (선택정렬 활용) 문제 K번째수 문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 array의 길이는 1 이상 100 .. 더보기
[Java] x,y 좌표 정렬 하기 설명 N개의 평면상의 좌표(x, y)가 주어지면 모든 좌표를 오름차순으로 정렬하는 프로그램을 작성하세요. 정렬기준은 먼저 x값의 의해서 정렬하고, x값이 같을 경우 y값에 의해 정렬합니다. 입력 첫째 줄에 좌표의 개수인 N(3 더보기
[AWS] Route 53 도메인 연결시 0.5달러 나오는 이유 AWS Free Tier 라서 돈 나갈 일이 없을 줄 알았는데, 문자로 돈이 나갔다는 걸 보고 깜짝 놀랐다 ! 😱 천원 조금 넘는 금액이었지만 혹시 뭔가 잘못 되었을까봐, 앞으로 더 큰 돈이 나갈까봐 무서웠다ㅠ😫😭 AWS 사이트에 가서 보니 Route 53에서 1달러가 나갔다고 써있었다. 세부 보기를 하니 아래와 같았다. (다행히 Elastic Compute Cloud는 프리 티어라서 0.00 달러.. ❤) Route 53 HostedZone! 하나에 0.5 달러인데, 나는 두 개라서 1달러라고.. 세금 0.1 달러라고.. Route 53이 무엇인지, 내가 왜 이 서비스를 이용했는지 이야기하겠다. Route 53은 클라우드 도메인 이름 시스템(DNS) 서비스이다. 이게 없으면 사이트에 'www.naver.. 더보기
[AWS] Route 53 도메인 연결 0. 호스팅 영역 클릭 1. 호스팅 영역 생성 클릭 2. 구매한 도메인 입력 (주의!!!! http등을 붙이지 않은 순수 도메인) ex) example.com 3. url 을 클릭하여 상세로 들어가기 4. 레코드 생성 값(Value)에 EC2 퍼블릭 IPv4 주소 적어주고 레코드 생성 퍼블릭 IPv4 주소 보기 더보기 더보기 5. 본인이 도메인을 구매한곳에 rounte53에서 만든 레코드에서 유형이 NS(NameServer 네임서버)인 것의 값 4개를 등록해준다. 도메인 구매 사이트마다 조금씩 다르지만 거의 동일하다. ex) godaddy dns관리 > 네임서버 등록 더보기
[React] react, next.js 사용시 쿼리스트링을 감춰야하는 경우 URL 에서 쿼리스트링을 감출 필요가 있을 경우, 아래와 같이 Next.js Router 의 push 함수의 두번째 파라미터 as (maskes url for the browser) 를 사용해서 쿼리스트링을 감출 수 있습니다. import { useRouter } from 'next/router' ... const router = useRouter() router.push( { pathname: '/sample', query: { testQuery: '12345' } }, '/sample' // 브라우저에 표시됨 ) 더보기