본문 바로가기

전체 글

(92)
Spring RefreshToken 구현 JWT는 한번 발급되면 만료 전 까지 삭제할 수 없다. 토큰 재발급의 경우 다양한 방식으로 구현될 수 있으며, 해당 포스팅에서 구현된 방식은 여러 방식 중 하나이다. Refresh Token을 사용하는 이유 access token은 발급 후 서버에 저장되지 않고 해당 토큰으로 사용자 권한을 인증하는 특징이 있다. 만약 access token이 탈취되면 토큰이 만료되기 전까지 해당 토큰을 갖고 있다면 누구나 권한 인증이 가능하다는 문제점이 있어 이를 보완하기 위해 access token의 만료 기간을 짧게 주는 방법이 있다. 하지만 사용자 측면에서는 토큰이 만료될때 마다 다시 로그인을 하여 토큰을 발급 받아야하는 불편함이 발생한다. 이를 해소하기 위해 refresh token을 사용하는데, access t..
Redis 백업 및 복구(RDB, AOF) Redis를 작년 프로젝트에서 사용해보고 이번 프로젝트에서도 사용하기로 했다. Redis는 인메모리 데이터 저장소로 읽기 성능이 뛰어나 캐싱, 세션 저장소 등 다양한 곳에서 많이 사용된다. 하지만 인메모리 데이터 특성상 휘발성으로 종료되는 경우 데이터가 유실된다. 기존 프로젝트에서는 현재 채팅방 인원수를 카운팅 해야하기에 유실되도 상관이 없었다. 이번 프로젝트에서는 속도 개선과 DB에 데이터를 저장하게 되면 너무 방대한 양의 데이터가 저장되고 조회수 어뷰징 방지, 최근 조회 글, 다운로드 글 등 데이터가 유실되면 안되기에 데이터를 다시 DB에 저장해야 하나 고민중에 Redis에서 RDB와 AOF 라는 방법으로 백업이 가능하다고 한다. RDB와 AOF도 각각의 장단점이 있으니 비교하면서 상황에 맞게 적절한..
QueryDSL 기본문법 1. Q-Type Q-Type 인스턴스를 사용하는 방법은 2가지 방법이 있다.QMember qMember = new QMember("m"); // 별칭 직접 지정 QMember qMember = QMember.member; // 기본 인스턴스 사용직접 별칭을 넣어서 사용해도 괜찮지만 기본 인스턴스에서 생성된 별칭을 사용하는 것을 권장한다. 별칭을 직접 지정하는 방법은 같은 테이블을 조인하는 경우에 쓰인다. 2. 검색 조건 Member findMember = queryFactory .selectFrom(member) .where(member.username.eq("member1").and(member.group.eq("class1"))) .fetchOne(); where절에는 and나 or을 사용할 수 있..