스프링 시큐리티DB연동 완료 및 principle조회

Hwawon_2·2022년 5월 11일
0

이제 처리된 Member관련 테이블을 Mybatis로 처리해보겠습니다.
com.ict.mapper 패키지 내에 MemberMapper인터페이스와 xml을 같이 만들겠습니다.

MemberMapper인터페이스

MemberMapper.xml
상단의

작성해주고

ResultMap은 기존 컬럼명과 VO의 변수명이 다르거나 혹은 구조가 달라질 때 (지금 같은경우 List AuthVO>는 두 개 이상이 들어올 수 있습니다.) 처리할 구조에 대해 미리 설정해두는 태그입니다.

이제 MemberMapper를 계정명으로 집어넣으면 계정관련 정보가 정확하게 나오는지 테스트코드로 확인해보겠습니다.

실행하면

초록불이 들어오면서 정보를 확인하면 성공입니다!

이제 받아온 MemberMapper의 데이터를 스프링 시큐리티에서 처리할 수 있도록 커스터마이징 해보겠습니다.
com.ict.security에 CustomUserDetailService를 만들고 UserDetailService를 implements 해줍니다.

security-context.xml에는 CustomUserDetailService를 빈컨테이너에 넣어주고, 그걸 이용해 로그인하도록 바꿔줍니다.

실행했을때

콘솔창에

InternalAuthenticationServiceException이 나온다면 제대로 작동한 것입니다.
저렇게 나오는 이유는 UserDetails를 리턴하기로 해놓고 null을 리턴하고 있어서 입니다.

그럼 이제 로그인 로직에서 MemberVO를 UserDetails로 바꾸도록 처리하겠습니다.
User를 상속한 CustomUser를 먼저 만들겠습니다.

이제 MemberVO가 입력되면 CustomUser의 생성자를 이용해 vo를 변환할수 있고, CustomUser클래스는 User를 상속받았는데, User는 다시 스프링 시큐리티에서 사용하는 UserDetail을 상속받은 상태입니다. 따라서 MemberVO를 스프링 시큐리티에서 쓸 수 있게 수정한 것입니다.

스프링 시큐리티 심화
기초적인 내용을 배웠다면 이제는 실질적으로 내가 만든 웹사이트에 스프링 시큐리티를 적용하는 방법을 배워보겠습니다.
먼저, jsp에서 스프링 시큐리티 옵션을 쓰는 법을 배워본 다음, 자동로그인 체크와 어노테이션을 이용한 적용까지 배우면
웹 사이트에 스프링 시큐리티를 좀 더 편하게 적용할 수 있습니다.

먼저 admin.jsp파일 내부에서 sec태그를 사용해보겠습니다.
c태그 라이브러리 처리 taglib설정을 해주면 됩니다.

profile
코딩 일기장

0개의 댓글