코딩공작소

로그인 및 회원가입 페이지 & 스프링 시큐리티 개발 최종 정리 본문

어플리케이션개발/토이프로젝트(취미)

로그인 및 회원가입 페이지 & 스프링 시큐리티 개발 최종 정리

안잡아모찌 2024. 12. 4. 21:34

생각보다 간단할 줄 알았던 부분에서 이상한 오류때문에 며칠동안 애를 먹고 흥미가 떨어질랑말랑 하던 찰나에 간신히 오류를 수정했다.

 

일단)))
스프리부트에서 타임리프를 사용하지 않고 jsp를 사용하려고 gradle.build를 건드리다가 뷰 리졸버 설정값이 꼬여보여서 뷰가 제대로 보여지지 않는 현상이 있었다.
--> 다시 타임리프를 우선순위로 설정하도록 수정했다.

 

또한, 시큐리티 인증 부분에서 회원가입 로그인 부분을 다시 만져 회원가입 및 로그인이 가능하도록 했고, 시큐리티컨피그 파일을 통해 명시되어 있는 요청값만 허용할 수 있도록 보안을 설정하였다.

 

 

[로그인 페이지]

먼저 시큐리티필터함수를 살펴보면, 지정된 페이지 외의 값들은 로그인페이지로 보내도록 명시되어 있다.
그리고 로그인성공시 홈으로 가서 기본 인덱스 화면이 나오도록 설정했다.
(로그아웃 기능은 버튼을 추가할 예정)

여기서 로그인을 form POST 형식으로 날리게 되면 로그인이 성공하게된다.

기본적으로 멤버 엔티티에 UserDetails의 인증인가 기능을 implements해준다.

그리고 로그인 기능을 사용할 수 있도록 해주는 UserDetailsService를 implements해주는 서비스디테일을 새롭게 만들어주었고,
memberRepositoryImpl를 주입해주었다.

그 이유는 !!!
엔티티의 기본 키 값이 아닌 다른 컬럼의 조건절을 통해서 조회를 해야하는 경우에는 em.find() 형태의 JPA를 사용할 수 없었다.
그래서 username이 키값이 아닌 멤버들에 대한 로그인 정보를 확인해야 했기 때문에 따로 나눠서 개발을 하게 됐다.
여기서, loadUserByUsername함수를 통해 로그인 인증을 하게 된다.

해당 MemberRepositoryImpl을 보게되면, JpaRepository를 상속받아 SpringJPA를 사용하여 조회해주는 함수를 추가해줬다.
(로그인 화면에서 멤버를 조회할 때 사용되는 값이 username이기때문에!!!)

 

[회원가입]

먼저 회원가입 요청을 받는 컨트롤러를 만들었다.
그리고 회원가입을 진행하고 완료가 되면 로그인 페이지로 리다이렉트할 수 있도록 설정해줬다.

MemberService단에 회원가입 함수를 구현했다.
SecurityConfig에서 주입한 PasswordEncoder를 사용하여 비밀번호를 암호화하고, 멤버값을 세팅하여 테이블에 저장해준다.

 

 

회원가입을 해주고 멤버 테이블에 데이터가 정삭적으로 삽입된 것을 확인할 수 있다.

그리고 해당 정보를 통해 로그인을 하면

우리가 바라던 인덱스 페이지로 가는 것을 확인할 수 있다.

이제는 우리가 관리하는 멤버 테이블에 있는 회원정보로 로그인을 해야지만 Todo 메인화면에 진입하는 것을 확인할 수 있다.

 

추후에는 각 멤버 별 투두를 관리하기 위해 멤버 엔티티와 투두 엔티티를 연관시켜 보는 부분을 개발할 예정이다.
여기서는 QueryDSL을 통해 조인문을 개발하는 것을 해볼 것이다.
그리고 나서는 EC2 환경에서 도커를 띄워 서비스를 돌리는 것까지 하고

여유가 된다면 배치를 개발해서 람다에 올려 완료되지 않은 Todo들을 이연시켜주는 기능을 개발하고, 로그도 AWS에서 볼 수 있도록 진행해보자 ~