스프링 시큐리티를 이용한 회원 가입 및 로그인

박일한·2021년 11월 30일
0

https://velog.io/@pih6585/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0%EC%99%80-OAuth2.0%EC%9C%BC%EB%A1%9C-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EA%B8%B0%EB%8A%A5-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0
내가 작성해놓은 스프링 시큐리티 적용 내용이고 바뀐점만 기록해놓자.

security dependency 추가하기

gradle 빌드에선 build.gradle에 입력하면되고 maven 빌드에선 pom.xml에 입력하면된다.

기본적으로 시큐리티를 이용해서 접속을 하려면
1. 인증이 필요한 페이지, 아닌 페이지를 구분한다.
2. 회원가입을 필요로 한다.
나는 실무에서 스프링 시큐리티를 쓰지않고 sessionCheckInterceptor, permissionInterceptor를 이용하여 인증구분을 하였다.

spring security 작성하기

기본적으로 securityConfig class를 이용해서 WebSecurityConfigurerAdapter를 상속받아서 하지만 내부적인 비즈니스 로직은 다르게 작성되어 있다.

여기서도 전에와 마찬가지로 Role을 정하고 Member를 작성하면 된다.
기본구성은 memberRepository에서 email을 찾는 메서드를 추가하고 서비스를 불러오면 된다.

서비스 부분에서는

기존에는 있으면 update 구문이 들어갔지만 현재는 validate를 통하여 중복체크를 실시한다.
thymeleaf에서 script를 사용하려면 이런식으로 사용해야한다.
특이점은 없고 configure에 들어가는 내용도 대동소이하기떄문에 소스코드가 필요하면 내 git을 활용해서 보자.

spring validation dependency 추가


해당 memberDto에 유효 검증을 할 컬럼에 어노테이션을 추가해준다.


controller에 bindingResult에 hasError를 통해서 오류를 검출한다.
이부분은 git에 jpa realTest 프로젝트랑 유사하게 구현되어있다. 스프링 시큐리티도 ...
누가 어떻게 작성하느냐에따라 셋팅이 많이 바뀌기 때문에 유의해야한다.
https://github.com/pih6585/realTest
여기에 스프링시큐리티 세팅이랑 비교해봐도 좋을거같다.

이번 챕터의 나의 생각

흠.. 코트를 짜보고 테스트해보고 돌려보는데 소요된 시간은 책이라는 레퍼런스가 존재함에도 불구하고 에러나 오타코드 잡고 좀 코드가 바뀌는 부분들 까지하니까 3~4시간은 소요된것 같다.
근데 이부분은 정리가 참 힘들었다. 기존에 이미 소스코드가 있고
https://github.com/pih6585/realTest
https://github.com/pih6585/aws-service
https://github.com/pih6585/shopmall
이거 3개의 셋팅이 다다르다... 이건 case by case로 만들어가면서 해야 될것 같다.
확실히 셋팅이나 orm쪽을 감안해서 개발하는게 더어렵다.
위에서 얘기했듯이 난 permission이랑 session 체크하고 암호화는 별도의 sha2로 복호화가 불가능한 암호화를 사용했었다.
페이지 마다 role을 제어한다는게 쉽지많은 않다. 서비스업이라면 바운더리가 정해져있기 때문에
설계측에서 어느정도 가능하지만 si처럼 외부의 화면을 제어하는건 쉽지가 않은것 같기도하다.
이유는 변화가 너무 많기 때문이다. 단순변심.. 화면 변경 등등..
아무튼 스프링 시큐리티를 활용할때 이페이지를 꼭참고해보자

profile
긍정적인 삶을 갖자~~

0개의 댓글