본문 바로가기

패스트캠퍼스/100% 환급 챌린지_2

패스트캠퍼스 환급챌린지 20일차 : Netplix 구독형 멤버십 프로젝트로 배우는 Spring Security 강의 후기

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://abit.ly/lisbva

 

 

안녕하세요 :)

오늘은 챌린지 20일차로, 벌써 이번 주말도 다 끝이 났네요ㅠ

 

오늘 배울 내용은,

Part A. 로그인, 로그아웃, 회원가입으로 배워보는 스프링 시큐리티 기초

Ch 6. 실전: 로그인, 로그아웃, 회원가입 만들어보기

"01. 요구사항 파악과 ERD 설계" 입니다.


 

이번 시간부터는 지금까지 배웠던 개념들을 활용해서 하나의 프로젝트를 진행할 예정이다. 프로젝트의 내용은 로그인을 하고 로그아웃을 하고 그 다음에 회원가입을 하는 그런 기능을 만들어 보게 될 것 같다.

강사님께서 먼저 구현된 기능을 보여주셨다.

1) 웹 페이지에 접근해서 로그인 화면이 나오면 로그인 화면에서 Username에는 이미 회원가입 되어 있는 유저 아이디와 패스워드를 입력한다.

2) 만약 틀린 비밀번호를 입력하면 로그인을 허용하지 않게 해야 하고, 비밀번호를 올바르게 입력하면 로그인에 성공하면서 등록된 유저의 이름을 노출시키는 프로젝트이다.

 

3) 그리고 로그아웃 버튼을 클릭하면 로그인 정보가 풀리면서 로그아웃을 해주면 된다.

먼저 요구사항을 살펴보면, 프로젝트나 readme에 대해서는 fcss07 이라는 프로젝트를 참조하면 된다. (github에 올라가 있음)

강사님께서 소개해주셨던 화면을 구현하기 위해서는 먼저 로컬 환경에서 데이터베이스를 설치해야 한다. 강의 기준으로는 MySQL 데이터베이스를 설치해서 활용했고, MySQL 데이터베이스는 docker compose 파일을 활용해서 실행했다. 그래서 docker compose  파일을 실행하면 로컬 환경에서 docker compose로 MySQL을 띄울 수 있다. 파일을 실행시키는 방법은 './docker-compose.yml' 파일을 실행시키면 된다.

그 다음에는 정보를 바탕으로 해서 url은 localhost, port, username, password 라는 정보를 가지고 데이터베이스 클라이언트 툴을 하나 설치한 뒤 이걸 가지고 로그인을 통해 접근해보면 된다.

접근에 성공하면 spring 이라고 하는 이름으로 스키마를 하나 생성하면 되고, 로컬 환경에서 애플리케이션을 실행시키면 설정되어 있는 hibernate 설정에 따라서 로컬 데이터베이스의 기본 테이블과 샘플 데이터가 생성되게 된다.

컨트롤러로부터 먼저 요청을 받고, 그 다음은 서비스, 그 다음은 레파지토리로 흘러간다. 서비스는 핵심 도메인 로직을 처리하는 곳이라고 보면 되고 레파지토리는 그 JPA를 활용해서 데이터베이스와의 통신을 담당한다고 보면 된다.

회원가입을 할 때 기본적으로 사용자의 경우에는 read 권한이 부여되어야 하고, 비밀번호는 decrypt 알리즘에 의해서 인코딩이 되어야 한다. 그 다음에 권한을 추가하거나 삭제하거나 조회할 수 있는 권한들도 있고, 권한의 종류는 read와 write 두 가지 종류의 권한이 존재한다.

ERD는 크게 복잡하지 않다. 두 개의 테이블만 활용을 하려 하고, 크게 첫번쨰 테이블은 사용자를 나타내는 user 테이블이 있고, 다음으로 각 사용자별로 권한을 관리하는 authority 테이블도 하나 만들어서 관리를 해보려고 한다. user 테이블과 authority 테이블은 1대 N 관계가 될 수 있다.(1명의 사용자가 N개의 권한을 가질 수 있음을 뜻함) 다음 시간에는 데이터베이스를 설정하는 방법들, 기본 환경 설정하는 방법들을 알아보고 본격적으로 프로젝트를 진행하게 될 것 같다.