백엔드/Spring Boot(27)
-
[Spring Security] Logout 구현하기
이번에는 로그아웃을 구현하는 코드에 대하여 작성해보려고 한다. # Logout 프로세스 클라이언트가 서버로 로그아웃 요청을 보낸다. 서버가 세션 무효화, 인증토큰 삭제, 쿠키 정보 삭제 처리 후 로그인 페이지로 리다이렉트 시킨다. # Logout API에 대하여 알아보자 logoutUrl() : 로그아웃 처리 경로 logoutSuccessUrl() : 로그아웃 성공 후 이동시킬 페이지 경로 addLogoutHandler : 로그아웃 핸들러, 로그아웃 성공 여부와 상관없이 실행 logoutSuccessHandler : 로그아웃 성공 핸들러 deleteCookies() : 로그아웃 후 지정한 이름의 쿠키를 삭제한다. @Configuration @EnableWebSecurity public class Secu..
2024.01.04 -
[Spring Security] Form Login 구현하기
Spring Security에서 제공하는 인증 방식에는 Form Login과 HTTP Basic Authentication 두가지 방법이 있다. Form Login 은 웹 애플리케이션에서 사용자에게 제공되는 로그인 폼을 통해 사용자를 인증하는 방식이고 HTTP Basic Authentication은 요청이 발생할 때마다 header에 인증 정보를 포함시켜 인증을 하는 방식이다. 이번 게시글에서는 Form Login 방식에 대하여 자세히 알아보려고 한다. # Form Login 인증 프로세스 클라이언트가 GET 방식으로 특정 페이지에 접근을 요청한다. 서버에서는 인증을 받은 상태인지, 인증된 사용자인지 확인 후 인증이 되지 않은 상태면 로그인 페이지로 리다이렉트 시킨다. 클라이언트가 로그인 페이지에서 PO..
2024.01.04 -
[Spring Security] Security Config 파일 만들기
강의에서는 WebSecurityConfigurerAdapter를 extends 하는 방식으로 개발을 하게 되어 있는데 Spring boot 3 버전 이상부터는 Spring security 6 버전을 dependency 하게 되었고, WebSecurityConfigurerAdapter 가 Deprecated(사용할 수 없음) 되었다. 문법은 람다 형식으로 변경되었다. 공식문서 : https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter/ # Security Config 파일을 만들어보자 @EnableWebSecurity : Spring Security를 사용하여 웹 보안을 활성화 Customizer.w..
2024.01.04 -
[Spring Security] 의존성 추가해보기
오늘부터 스프링 시큐리티 강의를 들으면서 실습한 내용을 블로그에 작성해보려고 합니다. (인프런에서 정수원 님의 스프링 시큐리티라는 강의를 참고하여 작성하였습니다) 프로젝트 스펙 DB : Mariadb ORM : JPA Java Version : 17 Type : Maven Spring Boot Version : 3.2.1 Dependencies : Spring Web # 간단한 문자열을 보여주는 컨트롤러를 생성 후 실행시켜 보자. 실행주소 : localhost:8080 코드 import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestCon..
2024.01.03 -
JWT를 적용한 로그인 구현하기
오늘은 Spring Security를 이용하여 JWT 토큰을 발급받고, 토큰의 만료 시간을 검증하는 기능을 개발하려고 합니다. Spring Boot 3.0 이상에서는 Spring Security 설정이 변경되었으므로 구글링을 통해 새로운 방법을 참고해야 합니다. 개발은 경록김님의 유튜브를 참고하여 진행했습니다. JWT 토큰 발급 및 검증을 위한 유틸리티 클래스를 작성하고, Spring Security 설정 클래스를 생성하여 JWT 토큰 사용을 설정했습니다. 추후에는 스프링 시큐리티에 관한 게시글도 작성해보겠습니다. # JWT(JSON Web Token) https://jwt.io/ JWT.IO JSON Web Tokens are an open, industry standard RFC 7519 method..
2024.01.03 -
DTO ↔ Entity 변환하기
✏️ DTO와 Entity의 변환 방법과 어느 계층에서 변환하는 것이 효율적인가에 대하여 알아보자. JPA에서는 데이터 은닉과 보안, 성능 최적화, 네트워크 트래픽 감소, 유연성 및 확장성, 코드 유지보수성을 향상하기 위해 외부에서 입력받은 데이터를 DB에 저장하는 경우 DTO -> Entity로 변환하고 DB에서 조회한 데이터를 외부로 표출할 때에는 Entity -> DTO로 변환해야 줘야 한다. 🔎 DTO ↔ Entity 변환 방법 1. ModelMapper 개념 객체의 필드 값을 다른 객체의 필드 값으로 자동으로 맵핑해주는 라이브러리 MapStruct에 비해 성능이 떨어지며 컴파일 단계에서 오류를 처리할 수 없다. 방법 - 의존성 주입 // build.gradle 파일에 추가 implementati..
2023.11.16