회원가입, 로그인 후 토큰이 발급되면 생성된 토큰을 Header에 담아 게시글 작성, 댓글 작성 등 할때마다 각 API Header Authorization에 수동으로 넣어줘야하는 수고스러움이 있었다.
그래서 매번 그럴 수는 없어 방법을 찾는데 구글에서는 토큰을 바디에서 받아와서 헤더에서 받아오는 우리프로젝트에는 적용이 되지 않았다.
회원탈퇴시 해당 회원의 게시글 , 댓글, 좋아요 기록 삭제하기
환경변수에 token을 생성하여 토큰 생성할때마다 자동으로 주입 되도록 설계 했다.
로그인 API탭에서 [Tests] 탭에 구글링해서 찾은 방식으로
var data = JSON.parse(responseBody);
pm.environment.set("authorization", data.token); 설정하고
로그인 후 게시글 작성하기 누르니 "가입되지 않는 사용자"라는 에러와
환경변수에 토큰 값이 자동 생성되지 않았다.
2에서는 코드는 토큰을 바디로 받아왔을때 적용가능 한것이라는 것을 알게 되었다. 우리는 헤더쪽,,,
환경변수로 token 만들기
포스트맨 좌측 메뉴바에서 [Environment]클릭 - 원하는 이름으로 설정(예: token) -VARIABLE 에 "token"을 입력한다.
로그인API(토큰이 생성되는 API) -[Tests] 탭에
pm.environment.set('token', postman.getResponseHeader('Authorization')); 입력
토큰을 자동으로 가져와 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);
}
포스트맨 활용법 : 반복적인 등록작업을 환경변수 설정하여 자동등록되도록 할 수 있다는 점
Cascade