프로젝트 5

문제 : 로그인 유저 정보는 어떻게?

나는 지금까지 테스트를 할 때 url_path는 /userid 로 요청을 했었다.
그런데 아래의 코드를 작성 하면서 의문점이 생겼다. 서버측에선 어떻게 유저의 정보를 식별하고
작동하는지 의문이 들었습니다. 일 그렇다면 모든 유저와 관련 된 서비스는 유저를 찾는 것을 시작으로 관계를 탐색해서 해야 하는 것일까? 그렇다면 이것은 비효율적이라고 생각했고 로그인에 대해 찾아보기로 했습니다.

@Override
    public Long create(UUID storeId, JobPostCmdDto dto) {
        Store findStore = storeRepository.findById(storeId).orElseThrow();
        JobPost newJobPost = new JobPost(findStore, dto.getTitle(), dto.getBody());
        jobPostRepository.save(newJobPost);
        // 구인공고가 올라갔으니
        // 구인공고중이라고 store의 상태를 변경해줘
        return newJobPost.getId();
    }

해결 : http, spring security를 공부하자!

http는 비연결형 통신으로 요청과 응답이 되면 연결이 끊어진다.
그렇다면 우리가 평소 웹을 이용하면서 로그인이란 것은 어떻게 진행 되는지 찾아보았다.
유저가 로그인을 하면 로그인 된 유저를 유지 하는 방법은 두가지가 있다고 한다.
1. 세션으로 로그인하기.
2. jwt토큰으로 로그인하기.
그 중에서 요즘은 jwt토큰을 주로 사용한다고 해서 jwt 방식을 자세히 살펴보고자 한다.
유저가 로그인을 하면 토큰의 페이로드 부분에 내가 원하는 정보는 key : value 형태로 전달 할 수 있다고 한다.
그렇다면 업주가 로그인 한다면 업주가 갖고 있는 가게의 아이디도 같이 전달하고 요청을 받을 때 바로
가게의 아이디를 활용 할 수 있다는 것을 확인 할 수 있었습니다.

공식 문서
스프링 시큐리티 공식 문서
네이버 OAuth
JWT 공식문서

참고 자료
로그인은 어떻게 이루어질까❓(Cookie, Session)
풀스텍 개발자의 웹 프로그래밍
jwt에서 정보 파싱하기

좋은 웹페이지 즐겨찾기