Skill Stacks/Java_Spring
[Java] 오늘 배운 것 20231025
by JayAlex07
2023. 10. 25.
[Java] 오늘 배운 것 20231025
JWT 토큰
@PostMapping("/login")
public TokenDto login(
@RequestBody @Valid MemberLogin.Request request
) {
MemberLogin.Response loginInfo = memberServiceImpl.login(request);
return "토큰이 생성되었습니다 : Bearer " +
tokenProvider.generateToken(loginInfo.getEmail(), loginInfo.getRole());
}
- 토큰을 생성하고, 바로 리턴을 했다
- 이렇게 하면 나중에 유저가 API를 사용할 때에 토큰을 계속 복사, 붙여넣기를 해야하는 불편함이 있다
@PostMapping("/login")
public TokenDto login(
@RequestBody @Valid MemberLogin.Request request
) {
MemberLogin.Response loginInfo = memberService.login(request);
TokenDto token = TokenDto.builder()
.accessToken(tokenProvider.generateToken(loginInfo.getEmail(), loginInfo.getRole()))
.tokenType("Bearer")
.build();
return token;
}
- TokenDto라는 클래스를 만들어서, 토큰 정보를 넣었다
- 추후에는 header에 이 클래스를 넣을 예정이다
UserDetails는 Entity에 사용하지 않을 것
- Entity는 데이터를 다루는 민감한 클래스다
- Entity는 실제 데이터를 매핑해주는 클래스
- UserDetails는 DTO 성격이 강한만큼, DTO에서 사용해준다
GlobalExceptionHandler
- 리턴 타입을 ResponseEntity로 해야, 200 + 에러 메세지가 안 뜨고, 원하는 에러 번호랑 에러 메세지가 뜨게 된다
- 그 전에는 메세지만 리턴하다보니 HTTP 200 이 계속 나와서, 조금 거슬렸다