메모프로젝트 심화 1

Kim Dong Kyun·2022년 12월 15일
1

Today I learned

목록 보기
17/43

깃허브 레퍼지토리

이번 프로젝트에서 특이했던 점은 JWT(Json Web Token)을 사용해서 여러 인증을 수행한다는 점이다.

위와 같은 방식이다.


코드는 다음과 같다.

    @Transactional
    public MemoResponseDto createMemo(MemoRequestDto requestDto, HttpServletRequest request) {

        String token = jwtUtil.resolveToken(request);
        //(1), token을 가져온다
        Claims claims;

        if (token != null){
            if (jwtUtil.validateToken(token)){
                claims = jwtUtil.getUserInfoFromToken(token);
            } else {
                throw new IllegalArgumentException("토큰 에러");
            }
            //(2), token이 claims의 token과 같다면 통과

            User user = userRepository.findByUsername(claims.getSubject()).orElseThrow(
                    () -> new IllegalArgumentException("사용자가 존재하지 않습니다")
            );

            Memo memo = memoRepository.saveAndFlush(new Memo(requestDto, user));

            return new MemoResponseDto(memo);
        } else {
            return null;
        }

(1)


토큰을 가져오는 부분.

0개의 댓글