나를 기록하다
article thumbnail
[Spring Security] SecurityContextHolder에서 로그인 정보를 잃어버렸다
Error 2024. 6. 21. 10:29

프로젝트를 진행하면서 Spring Security + JWT로 회원가입 및 로그인은 구현 완료 후 테스트까지 성공하였고 이제 follow 기능을 만들면서 테스트를 하던 중에 발생한 에러다. 문제아래와 같이 먼저 로그인을 진행하고, follow/{memberId}에 맞게 api를 호출했는데 anonymousUser라고 인증되지 않은 사용자로 출력되어 에러가 발생하였다. 해결문제 원인은 아주 간단한 것이었다. 이 간단한 원인을 2시간 넘게 찾고 있었던 것이다.POST 방식으로 HTTP 통신을 할 때 Header에 있는 Authorization을 통해서 로그인 정보를 확인하는데 Bearer Token에 로그인시 발급받은 Access Token을 넣어야 하는데 넣지 않고 api만 전달한 것이다.이렇게 Token..

article thumbnail
[Interview] JPA, 알고 쓰고 있을까?
CS/Interview 2024. 6. 18. 23:13

지금 프로젝트에 JPA를 사용하면서 문득 나는 JPA를 정말 알고 사용하고 있을까라는 의문이 들었다. 기한에 쫓겨가며 코드를 작성하는데 내가 처음에 생각했던 내 코드에 대해 완벽히 이해하고 설명할 수 있는 코드를 쓰자는 생각과 거리가 멀어진 느낌을 받았다. 그렇기 때문에 다시 초심을 찾고 조금 더디더라도 이해하고 누군가 나에게 코드에 대해 질문하면 설명할 수 있는 내가 되기 위해 면접 답변 형식으로 개념을 정리하고자 한다. 시작하겠다. JPA란 무엇인가?답변Java Persistence API의 약자로 자바 진영의 ORM 기술 표준입니다.관계형 데이터베이스는 어떻게 데이터를 저장할지에 초점이 맞춰진 기술이고, 객체지향 프로그래밍 언어는 메시지를 기반으로 기능과 속성을 한 곳에서 관리하는 데 초점이 맞춰진..

article thumbnail
[Spring Security] Spring Security와 JWT 적용 과정
Java/Spring 2024. 6. 18. 13:54

사이드 프로젝트를 진행하면서 Spring Security와 JWT를 적용하여 회원 기능을 완성하는 역할을 맡게 되었다.JWT는 프로젝트에 적용시켜본 경험이 있으나 Spring Security는 처음이었고 Spring Security와 JWT를 함께 적용시켜보는 것 또한 처음이었기에 JWT부터 Spring Security까지 적용시켜가는 과정을 차근차근 기록해보려 한다. 시작하겠다. JWT(Json Web Token)인증 방식토큰 인증 방식(JWT)동작 원리사용자가 로그인하면 서버는 JWT와 같은 토큰을 생성하여 클라이언트에 전달클라이언트는 이후의 모든 요청에 이 토큰을 HTTP 헤더에 포함시켜 서버로 전송서버는 토큰을 검증하여 사용자 정보를 확인하고 인증 여부 판단장점서버는 무상태(stateless) 방..

article thumbnail
[GIT] Github 저장소 특정 브랜치 clone 하기
GIT 2024. 6. 17. 13:37

깃을 사용하여 프로젝트를 진행하던 도중, clone을 할 일이 생겼는데 그냥 clone을 하니 master branch만 clone이 되었다.전에도 이런 일을 경험한 적이 있었는데, 기록을 하지 않았더니 똑같은 일이 발생하여 이번에는 특정 브랜치를 클론하는 방법을 기록해두고, 다음에 필요할 때 찾아보려 한다. 시작하겠다. 깃허브 저장소에서 클론하려면 다음과 같이 Clone을 눌렀을 때 나오는 코드를 사용하면 된다.기존의 clone 방법은 다음과 같다.git clone [REPOSITORY_URL] [DIRECTORY]위 레포지토리를 예시로 들면 아래와 같다. 나는 iterm2에서 해당 레포지토리로 이동 후 클론하였으므로 [DIRECTORY]는 생략하였다.git clone https://github.com..

article thumbnail
[TIL-58/240615] 기술면접(자바)
TIL 2024. 6. 15. 22:23

기술면접 질문(자바)Java의 특징을 설명하라.Java는 대표적인 객체지향 프로그래밍 언어로써 기본 자료형을 제외한 모든 요소들이 객체로 표현되고, 객체 지향 개념의 특징인 캡슐화, 상속, 다형성이 잘 적용된 언어입니다.장점으로썬 JVM 위에서 동작하기 때문에 운영체제에 독립적이고,가비지 컬렉터를 통한 자동적인 메모리 관리가 가능하다가 있습니다.단점으로썬 JVM 위에서 동작하기 때문에 실행 속도가 상대적으로 느리고,다중 상속이나 타입에 엄격하여 제약이 많다가 있습니다. JVM의 역할에 대해 설명하라.JVM은 스택 기반으로 동작하며, Java Byte Code를 OS에 맞게 해석해주는 역할을 하고 가비지 컬렉션을 통해 자동적인 메모리 관리를 해준다. 자바 애플리케이션의 구동 원리를 설명하라.자바 애플리케이..

article thumbnail
[TIL-57/240613] Spring 계층 구조(레이어 아키텍처), Web Server & WAS & Web Service
TIL 2024. 6. 13. 22:27

Spring Project의 계층 구조(Layer Architecture) - Web / Service / RepositoryAPI를 만들기 위해서는 3개의 클래스가 필요하다.Request 데이터를 받을 DTO / API 요청을 받을 Controller / 트랜잭션, 도메인 기능 간의 순서를 보장하는 ServiceService의 역할과 Domain의 역할Service에서 비즈니스 로직을 처리 X → 비즈니스 로직은 Domain에서 처리Service는 트랜잭션, 도메인 간 순서 보장의 역할 수행 Spring의 웹 계층 구조 Web 계층컨트롤러(@Controller), View Template(ex. JSP, Thymeleaf, Freemarker ...)의 영역필터(@Filter), 인터셉터, 컨트롤 어드..

profile on loading

Loading...