728x90
📝오늘 공부한 것
- 실전프로젝트 - '행동대장' 발표준비
- 실전프로젝트 - '행동대장' 코드리팩토링 및 보완
📌 코드 리팩토링 및 보완
1. controller에 남아있던 service 로직들을 service로 넘겼다.
ex)
✔ UserConrtoller
@PostMapping("/login")
public ResponseEntity<CommonResponse<LoginResponseDto>> login(@RequestBody @Valid LoginRequestDto requestDto, HttpServletResponse response){
CommonResponse<LoginResponseDto> commonResponse = userService.login(requestDto);
LoginResponseDto responseDto = commonResponse.getData();
response.addHeader(JwtUtil.AUTHORIZATION_ACCESS, responseDto.getAccessToken());
response.addHeader(JwtUtil.AUTHORIZATION_REFRESH, responseDto.getRefreshToken());
return new ResponseEntity<>(new CommonResponse<>(commonResponse.getMsg()), HttpStatus.OK);
}
👇🏻
✔ UserConrtoller
@PostMapping("/login")
public ResponseEntity<CommonResponse> login(@RequestBody @Valid LoginRequestDto requestDto, HttpServletResponse response){
return new ResponseEntity<>(userService.login(requestDto, response), HttpStatus.OK);
}
2. Refresh Token 발급 시 DB에 update되지 않고 계속 쌓임.
-> 로그인 시 access token과 refresh token을 발급해주고 있음. refresh token은 DB에 저장하는데 로그인을 할 때마다 DB에 쌓이고 있음. 같은 유저가 새로운 refresh token을 발급받으면 이전 것을 삭제하는 로직을 추가함.
✔ UserService
//로그인
@Transactional
public CommonResponse<LoginResponseDto> login(LoginRequestDto requestDto, HttpServletResponse response){
User user = userRepository.findByEmail(requestDto.getEmail()).orElseThrow(() ->
new LoginException(ClientErrorCode.NO_ACCOUNT));
if(!passwordEncoder.matches(requestDto.getPassword(), user.getPassword())){
throw new LoginException(ClientErrorCode.INVALID_PASSWORDS);
}
String accessToken = jwtUtil.createAccessToken(user.getNickname(), user.getRole());
String refreshToken = jwtUtil.createRefreshToken(user.getNickname());
refreshTokenRepository.deleteByUserId(user.getUserId());
RefreshToken refreshTokenEntity = new RefreshToken(refreshToken.substring(7), user.getUserId());
refreshTokenRepository.save(refreshTokenEntity);
response.addHeader(JwtUtil.AUTHORIZATION_ACCESS, accessToken);
response.addHeader(JwtUtil.AUTHORIZATION_REFRESH, refreshToken);
return new CommonResponse(LOGIN_SUCCESS);
}
느낀 점🤔
이번주는 발표준비를 하느라 코드는 잘 보지 못할 것 같다. 브로셔 만들기, 발표영상 제작하기, 발표자료 만들기, 시연영상 제작하기 등등 가장 정신없고 바쁜 날들인것 같다ㅠㅠ 지금까지 진행한 프로젝트에 대해 발표하는 날이니 열심히 해야겠다!열심히한만큼 마무리도 잘 해봐야겠다..!틈틈히 코드리팩토링도 하고 이해하지 못하고 넘어갔던 부분들도 다시 한번 공부해봐야겠다.
728x90
'TIL(Today I Learned)' 카테고리의 다른 글
TIL-230907(항해99 실전 프로젝트-행동대장(27)) (0) | 2023.09.07 |
---|---|
TIL-230906(항해99 실전 프로젝트-행동대장(26)) (0) | 2023.09.06 |
TIL-230904(항해99 실전 프로젝트-행동대장(24)) (0) | 2023.09.04 |
TIL-230902(항해99 실전 프로젝트-행동대장(23)) (0) | 2023.09.02 |
TIL-230901(항해99 실전 프로젝트-행동대장(22)) (0) | 2023.09.01 |