[F-Lab 모각코 페이백 36일차] Spring Security 로그인 구현
학습목표
- Spring Security 로그인
TIL
- Spring Security 로그인
멘토님께서 Spring Security으로 로그인 기능을 구현해 보라고 하셨다.
처음에 듣고 오잉? 뭐지?
그냥 로그인도 아니고 왠 security에 로그인 기능이?? 왜 이걸로?
라는 생각이 들었다.
일단 알아보니 어째 어째 스프링 시큐리티를 이용하여 로그인 기능이 구현이 가능한 것 같았다.
멘토님께서 처음엔 보내주신 문서엔
WebSecurityConfigurerAdapter으로 구현하는 방법이 있었고
이런 deprecated 된 것과 최신 방법도 알아야 한다고 하셨다.
deprecated 된 것으로 요즘에 구현하긴 좀 그래서 최신 @Configration 어노테이션 선언해서
빈으로 선언해서 쓰는 방법으로 구현하려고 하였다.
스프링 공홈 블로그에 있는 블로그의 예제를 따라 타자치면서 구현하였지만
먼가 처음에 구현하려는 로그인은 아니였다.
그래서 처음부터 다시하여야 했는데
방금 스프링 시큐리티 예제로 예제긴 하지만 구동까지 되었었는데
아무것도 할 수 없었다.
한 이틀 멍때리면서 생각하다가 진도는 하나도 못나갔다.
먼가 아는 것이 있어야 읽힐텐데 왠지 모르게 거의 읽을 수가 없었다.
그래도 해야해서 나중에 아무 클래스, 상속 이런거를 검색해서 하나씩 알아가기 시작하였다.
그때부터 먼가 공부가 되고 시작되기 시작하였다.
공부를 시작하는데 먼가 끝도 없었다.
구현하고 나서 알아본 내용은 많아도 1/3 정도??
정말 범위도 넓고 깊이도 있어서 2~3일 시간 되는 대로 했는데도
계속 공부만 하고 있었다.
IDE에는 빨간줄 끄여서 오류라고 뜨는데도 실행되고 동작되고
https://victorydntmd.tistory.com/328 이 분의 블로그 참고해서 했는데
[SpringBoot] Spring Security를 이용한 회원가입/로그인/로그아웃
이번 글에서는 Spring Security를 이용하여 회원가입 및 로그인을 구현해보도록 하겠습니다.전체 코드는 깃헙을 참고하시길 바랍니다. 개발환경IntelliJ 2019.02Java 11SpringBoot 2.1.9Gradle 5.6라이브러리 일
victorydntmd.tistory.com
하다보니 먼가 없고 아쉬운 점도 있었지만 도움많이 받고 이 분 덕에 컨트롤러, DB, DAO등이 있어야하는지를 알았다.
기존 로그인 비즈니스 부분을 시큐리티에서 미리 인터페이스로 있고 구체화 해서 쓴다는 점이 시큐리티와 내가 상상했던 일반 로그인과의 차이였는데 (로그인된다는 점은 같지만 내용과 과정이 다를 수 있다)
시큐리티에서 미리 체계적으로 보안과 로그인 부분을 어느정도 체계화 되어 있다보니
로그인 정보는 Principal이라는 객체를 통해 가져오면 되는 엄청난 경험을 하였다.
예전 같으면 DB의 정보나 세션정보를 컨트롤 해야 했을 텐데
이건 미리 만들어진 객체의 클래스를 import 하고 그 객체를 선언하고 쓰면 된다.
와 딴 건 몰라도 여기서 시큐리티하는 이유를 알 것 같았다.
다른 건 미리 interface로 되어 있어서 구체화해서 쓰면 되었지만 사실 이것도 공부하고 코딩해야하는 부분이였지만
이건 미리 시큐리티에서 시큐리티를 이용하면 제공해주는 유용하고 편리한 기능(객체)이였다.
더 공부하고 싶었는데 언제 끝날지도 모르고 로그인부분은 끝나서 필요하면 그 때 다시 공부하기로 하고 이쯤에서 마친다.
구현하면서 어느정도까지는 이해한 것 같은데 기상천외하게 또 모르는 부분이 줄줄 나올 것 같다.
아 처음에 어느 버전 부터 새로운 시큐리티 버전의 설정 클래스 부분이 변경되어 적용되었는지 몰라서
이부분도 좀 많이 헤매였다.
검색하고 이리저리 찾아보다가 스프링 부트 공홈에 사용한 스프링 부트 Docu에 version reference 부분인가(이름은 기억나지 않지만 맨 밑쪽에 있었다.)
또 이번에 시큐리티 버전이 6.0부터인가 변경된 것으로 알고 있는데
변경된지 1년이 넘었음에도 새로운 시큐리티에 관한 검색이 잘 되지 않아 고민했던 경험과 또 이 정도면 어느정도 검색된 것이라는 것을 알고 안도하고 깨달음 점 등이 새롭게 배운 점이다.
스프링 시큐리티 6 이라는 검색어와 타이틀로는 잘 뜨지 않아 다소 놀랬다.
모두들 좀 당황하고 저를 포함해서 여러가지 타이틀로 나뉘어져 있어서 다소 공부하는 입장에서는 아쉬웠다.