From 347c9ba11d33f4f9ba9c36e72e495cc31631c1d9 Mon Sep 17 00:00:00 2001 From: CHAEYEON PARK <61193581+Yeon-chae@users.noreply.github.com> Date: Fri, 7 Jun 2024 18:43:50 +0900 Subject: [PATCH] =?UTF-8?q?[Refactor]=20=EB=A1=9C=EA=B7=B8=EC=95=84?= =?UTF-8?q?=EC=9B=83=20=EB=B0=98=ED=99=98=20Dto=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/controller/MemberController.java | 17 ++++++++++++++--- .../domain/member/dto/LogoutResponseDto.java | 19 +++++++++++++++++++ .../Backend/global/config/SecurityConfig.java | 7 ------- 3 files changed, 33 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/SafeNet/Backend/domain/member/dto/LogoutResponseDto.java diff --git a/src/main/java/com/SafeNet/Backend/domain/member/controller/MemberController.java b/src/main/java/com/SafeNet/Backend/domain/member/controller/MemberController.java index b8760bb..0ff3161 100644 --- a/src/main/java/com/SafeNet/Backend/domain/member/controller/MemberController.java +++ b/src/main/java/com/SafeNet/Backend/domain/member/controller/MemberController.java @@ -87,14 +87,25 @@ public ResponseEntity login(@RequestBody LoginRequestDto login @PostMapping(value = "/logout") @Operation(summary = "로그아웃", description = "JWt 토큰을 redis에서 삭제합니다") - public ResponseEntity logout( @RequestHeader(name = "ACCESS_TOKEN", required = false) String accessToken, + public ResponseEntity logout( @RequestHeader(name = "ACCESS_TOKEN", required = false) String accessToken, @RequestHeader(name = "REFRESH_TOKEN", required = false) String refreshToken) { + String message = ""; + HttpStatus status = HttpStatus.OK; Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); UserDetailsImpl userDetails = (UserDetailsImpl) principal; String email = userDetails.getUsername(); log.info("토큰으로부터 이메일을 추출하였습니다.: "+email); - memberService.logout(email, accessToken); - return ResponseEntity.ok().build(); + try { + memberService.logout(email, accessToken); + message ="로그아웃을 성공적으로 완료했습니다."; + } catch (Exception ex){ + throw new CustomException("로그아웃과정 중 에러가 발생했습니다. : "+ ex.getMessage()); + } + LogoutResponseDto logoutResponseDto + = LogoutResponseDto.builder(). + result(message). + build(); + return ResponseEntity.status(status).body(logoutResponseDto); } @PatchMapping("/address") diff --git a/src/main/java/com/SafeNet/Backend/domain/member/dto/LogoutResponseDto.java b/src/main/java/com/SafeNet/Backend/domain/member/dto/LogoutResponseDto.java new file mode 100644 index 0000000..d5eb563 --- /dev/null +++ b/src/main/java/com/SafeNet/Backend/domain/member/dto/LogoutResponseDto.java @@ -0,0 +1,19 @@ +package com.SafeNet.Backend.domain.member.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.ToString; + +@Builder +@Data +@AllArgsConstructor +@ToString +@Schema(description ="로그아웃 Dto") +public class LogoutResponseDto { + @Schema(description = "로그아웃 결과", required = true, example = "로그아웃에 성공했습니다.") + @NotNull + String result; +} \ No newline at end of file diff --git a/src/main/java/com/SafeNet/Backend/global/config/SecurityConfig.java b/src/main/java/com/SafeNet/Backend/global/config/SecurityConfig.java index a938242..8889121 100644 --- a/src/main/java/com/SafeNet/Backend/global/config/SecurityConfig.java +++ b/src/main/java/com/SafeNet/Backend/global/config/SecurityConfig.java @@ -4,18 +4,15 @@ import com.SafeNet.Backend.global.auth.JwtTokenProvider; import com.SafeNet.Backend.global.exception.JwtAccessDeniedHandler; import com.SafeNet.Backend.global.exception.JwtAuthenticationEntryPoint; -import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.SecurityFilterChain; @@ -59,10 +56,6 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { .requestMatchers("/", "/api/auth/**", "/swagger-ui/**", "/v3/api-docs/**", "/s3/test", "/ws-stomp/**").permitAll() // 특정 경로에 대한 접근 허용 // .requestMatchers(HttpMethod.GET,"/api/v2/posts/{postId}").permitAll() // GET 요청 허용 .anyRequest().authenticated()) // 나머지 요청은 인증 필요 - //.formLogin(form -> form - // .loginPage("/login").permitAll()) // 로그인 페이지 설정 - //.logout(logout -> logout - // .logoutSuccessUrl("/").permitAll()) // 로그아웃 성공시 리다이렉션 설정 .exceptionHandling(authenticationManager -> authenticationManager .accessDeniedHandler(jwtAccessDeniedHandler) .authenticationEntryPoint(jwtAuthenticationEntryPoint))