본문 바로가기

로그인 실습5

로그인 처리 (5) - JPA와 DB 생성 및 조회 DB는 각자가 편한 툴을 활용하면 된다 내장 DB를 사용해도 된다 (단, 프로젝트 종료 시 DB가 초기화됨) 여기서는 mariaDB를 이용한다 ClubMember 객체와 ClubMemberRole 객체를 각각 class, enum으로 생성한다 @Entity @Builder @AllArgsConstructor @NoArgsConstructor @Getter @ToString public class ClubMember extends BaseEntity { @Id private String email; private String password; private String name; private boolean fromSocial; @ElementCollection(fetch = FetchType.LAZY) .. 2022. 1. 22.
로그인 처리 (4) - 리소스별 Authorization Spring Security에서 특정 리소스에 Access Control 하는 방식은 크게 2가지이다 1. 설정을 통해 패턴 지정 2. 어노테이션을 이용하여 적용 먼저 1번 방법으로 리소스 인가를 해보자 SecurityConfigure 클래스에 아래 코드를 추가한다 @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeHttpRequests() .antMatchers("/sample/all").permitAll() .antMatchers("/sample/member").hasRole("USER"); // Authorization 실패 시 로그인 화면 http.formLogin(); // csrf 토큰 비.. 2022. 1. 20.
로그인 처리 (3) - PasswordEncoder 앞서 생성했던 SecurityConfig에서 override로 인증과 인가에 대한 처리를 할 수 있다 요소들에 대해서 알아보자 PasswordEncoder 이름 그대로 패스워드를 암호화하는 것이 주목적이다 Spring Boot 2.0부터 인증을 위한 필수 요소가 되었다 PasswordEncoder를 직접 구현하거나 구현된 클래스를 이용해야 하는데, Spring Security에는 여러 종류의 구현 클래스가 있다 그중에 가장 많이 사용되는 것이 BCryptPasswordEncoder이다 'bcrypt'라는 해시 함수를 이용하여 패스워드를 암호화하는데, 복호화가 불가능하고 매번 암호화된 결과가 다르다는 특징이 있다 (길이는 같음) 패스워드를 암호화하는 테스트 코드이다 @SpringBootTest public.. 2022. 1. 20.
로그인 처리 (2) - Spring Security 이해 기존에 Spring 만으로 프로젝트를 생성하는 경우 web.xml의 복잡한 설정을 직접 해주었어야 했지만, Spring Boot는 자동 설정 기능이 있어 기본적인 세팅이 자동으로 된다(앞 글에서 프로젝트 실행하여 확인했었음) 하지만 프로젝트 특성, 상황에 맞게 설정을 해주어야 하므로 SecurityConfig 클래스를 생성한다 Security 관련 기능을 쉽게 설정하기 위해 WebSecurityConfigurerAdapter 클래스를 상속받는다 해당 클래스는 method override를 통해 여러 설정을 하게 된다 간단한 테스트를 위해 Controller와 페이지를 만든다 프로젝트를 실행해서 /sample/all로 접근하면 /login 페이지로 리다이렉션 되며 처리 과정에서 WebAsyncManager.. 2022. 1. 19.
로그인 처리 (1) - 프로젝트 생성 도서 를 학습하면서 실습과 내용을 정리해보려고 한다 로그인 처리는 Spring Boot, Spring Security 환경을 이용할 예정 먼저 Spring 프로젝트를 생성. 아래 링크에서 생성해준다 https://start.spring.io/ 의존성과 환경설정은 아래와 같다 dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation .. 2022. 1. 18.