[Spring] DB를 사용한 JWT 인증에서 로그아웃을 구현해보자
·
Spring
들어가며Spring 프로젝트에서 로그인(인증)을 JWT로 구현해 냈다.나는 데이터베이스를 전혀 사용하지 않는 Spring Security 스프링 `기본 JWT 방식이 아닌`, DB에 인증 테이블을 만들고 User의 Id와 Refresh Token을 같이 저장한 방법을 썼다. 그 이유는 아래에서 얘기해 보자. 이제 로그아웃을 만들면서 하게 된 고민과 과정을 나열해 보겠다.(처음엔 별생각 없이 Refresh Token을 테이블에서 삭제하는 삽질을..)   기본 JWT 방식으로는 안전한 로그아웃을 구현이 어려울걸?기본 JWT 방식에서는 서버가 토큰 상태를 제어할 수 없어 안전한 로그아웃 구현이 어렵다.그 이유는 토큰 발급 후 서버는 토큰 관리 권한을 잃어버리는데, 이는 서버 어디에도 `사용자 정보`와 `만료 ..
Spring 프로젝트에 로컬 캐시를 도입해보자.
·
Spring
들어가며스프링을 기반으로 한 팀 프로젝트를 개발하면서, 성능 최적화를 해보고 싶었습니다. 그 와중에 떠오른 게 바로 캐시입니다. 개념만 살짝 알고 있었는데 이번 포스팅을 통해서 글로벌 캐시가 아닌 로컬 캐시를 선택한 이유 그리고 가장 중요한 캐시의 검증 을 로그를 통해 알아보겠습니다.   로컬 캐시를 선택한 이유 캐시 전략에는 크게 두 가지 유형이 있습니다글로벌 캐시:여러 대의 서버를 사용하는 환경에서 별도의 캐시 서버를 구축하여 사용합니다.장점: 분산 서버 환경에서 효율적입니다.단점: 외부 캐시 서버와의 네트워크 비용이 발생하며, 별도의 캐시 서버 구성이 필요합니다.로컬 캐시:각 서버 인스턴스의 자원을 사용하여 캐시를 구성합니다.장점: 구현이 간단하고, 하나의 서버 인스턴스에서 운영될 때 글로벌 캐시에..
[백엔드] 스프링 핵심 원리 기본편 정리
·
Spring
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8#curriculum 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 객체 지향 설계와 스프링 스프링이란?
[김영한 스프링 핵심 원리: 기본편] 간단하게 기록하기
·
Spring
스프링과 객체 지향 이야기의 연관성스프링은 다음 기술로 다형성 + OCP, DIP를 가능하게 지원DI(Dependency Injection): 의존관계, 의존성 주입DI 컨테이너 제공클라이언트 코드의 변경 없이 기능 확장쉽게 부품을 교체하듯이 개발  OCP(Open/Close Principle)자신의 확장에는 열려있어야 하고, 주변의 변화에는 닫혀있어야 한다. DIP(Dependency Inversion Principle)고수준 모듈은 저수준 모듈의 구현에 의존해서는 안 된다. 저수준 모듈이 고수준 모듈에서 정의한 추상 타입에 의존해야 한다.        스프링이 없던 시절옛날 어떤 개발자가 좋은 객체 지향 개발을 하려고 OCP, DIP 원칙을 지키면서 개발을 해보니, 너무 할일이 많았습니다. 그래서 프..
[스프링 핵심 원리 - 기본편] 좋은 객체 지향 설계의 5가지 원칙(SOLID)
·
Spring
SOLID 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리 SRP: 단일 책임 원칙(Single responsibility principle) OCP: 개방-폐쇄 원칙(Open/closed principle) LSP: 리스코프 치환 원칙(Liskov substitution principle) ISP: 인터페이스 분리 원칙(Interface segregation principle) DIP: 의존관계 역전 원칙(Dependency inversion principle) SRP 단일 책임 원칙 Single responsibility priciple 한 클래스는 하나의 책임만 가져야 합니다. 하나의 책임이라는 것은 모호합니다. 클 수 있고, 작을 수 있습니다. 문맥과 상황에 따라 다릅니..