[TIL]22.01.03 포스트맨에서 토큰 자동 생성하는 방법, 회원탈퇴 방법

hyewon jeong·2023년 1월 3일
0

TIL

목록 보기
60/138
post-thumbnail

1 . 문제점

  1. 회원가입, 로그인 후 토큰이 발급되면 생성된 토큰을 Header에 담아 게시글 작성, 댓글 작성 등 할때마다 각 API Header Authorization에 수동으로 넣어줘야하는 수고스러움이 있었다.
    그래서 매번 그럴 수는 없어 방법을 찾는데 구글에서는 토큰을 바디에서 받아와서 헤더에서 받아오는 우리프로젝트에는 적용이 되지 않았다.

  2. 회원탈퇴시 해당 회원의 게시글 , 댓글, 좋아요 기록 삭제하기

2 . 시도한 점

  1. 환경변수에 token을 생성하여 토큰 생성할때마다 자동으로 주입 되도록 설계 했다.

  2. 로그인 API탭에서 [Tests] 탭에 구글링해서 찾은 방식으로
    var data = JSON.parse(responseBody);
    pm.environment.set("authorization", data.token); 설정하고
    로그인 후 게시글 작성하기 누르니 "가입되지 않는 사용자"라는 에러와
    환경변수에 토큰 값이 자동 생성되지 않았다.

  3. 2에서는 코드는 토큰을 바디로 받아왔을때 적용가능 한것이라는 것을 알게 되었다. 우리는 헤더쪽,,,

3 . 해결

첫번째 문제 해결

  1. 환경변수로 token 만들기
    포스트맨 좌측 메뉴바에서 [Environment]클릭 - 원하는 이름으로 설정(예: token) -VARIABLE 에 "token"을 입력한다.

  2. 로그인API(토큰이 생성되는 API) -[Tests] 탭에
    pm.environment.set('token', postman.getResponseHeader('Authorization')); 입력

  1. 토큰이 필요한 API만 폴더로 지정한 후 - 폴더에 직접 설정해준다.- [Authorization] - [Type] 은 API key , [Key] - Authorization ,
    [Value] - {{token}} ,[Add to] - Header 입력 및 설정 하면

토큰을 자동으로 가져와 API실행이 된다.

결과

로그인

게시글 작성

두번째 문제해결

    @Column(nullable = false)
    @Enumerated(value = EnumType.STRING)
    private UserRoleEnum role;

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "user", cascade = CascadeType.REMOVE)
    List<Post> postList = new ArrayList<>();

    @OneToMany(fetch = FetchType.LAZY,mappedBy = "user",cascade = CascadeType.REMOVE)
    List<Comment> commentList = new ArrayList<>();

연관관계 맺을때 CascadeType.REMOVE 로 설정하여 회원 삭제시 연쇄적으로 게시글, 댓글, 좋아요 도 함께 삭제 되도록 하였다.

UserService 회원탈퇴API

    @Transactional
    public ResponseStatusDto resignMembership(Long id, User user) {
        User foundUser = userRepository.findById(id).orElseThrow(
                () -> new IllegalArgumentException("사용자가 존재하지 않습니다. ")
        );
        if (foundUser.getUsername().equals(user.getUsername())) {
            userRepository.delete(foundUser);
        } else {
            throw new IllegalArgumentException("접근할 수 있는 권한이 없습니다.");
        }
        return new ResponseStatusDto(StatusEnum.RESIGN_SUCCESS);
    }

4 . 알게 된점

  1. 포스트맨 활용법 : 반복적인 등록작업을 환경변수 설정하여 자동등록되도록 할 수 있다는 점

  2. Cascade

5 . 기타 공부

profile
개발자꿈나무

0개의 댓글