TIL(Today I Learned)
TIL-230905(항해99 실전 프로젝트-행동대장(25))
코코예원
2023. 9. 5. 23:13
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