IT수업/STS3

IT 수업 21주차 (142) Security 3_DB연결

워제하 2024. 5. 13. 15:01

 

 

src/main/java의 config에 auth패키지를 만들고 PrincipalDetail 클래스를 만든다.

 

PrincipalDetails에 userDto를 적용시킨다.

 

빨간줄에 커서를 올려 add unimplements method를 눌러준다.

그리고 return을 수정해준다.

 

 

 

 

다음은 auth에 PrincipalDetailsService 클래스를 만들어 준다.

 

 

implements UserDetailsService를 적고 생긴 빨간줄도 위와 같이 Unimplements 를 추가해준다.

 

 

@Autowired로 UserMapper를 추가해준다.

 

 

그리고 UserMapper로 가서 select를 위한 코드를 작성해준다.

 

 

그리고 다시 PrincipalDetails로 돌아와서 위에 적은 것들을 적용시켜준다.

 

 

 

작성한 UserDetailsService를 등록시키기 위해 SecurityConfig로 가서 작성해준다.

 

 

PrincipalDetails로 와서 collection을 작성해준다.

 

그리고 실행하여 로그인하고 user페이지로 가면 이렇게 나온다. 

( 로그인 직후에는 user페이지로 넘어가는게 아니라 main 페이지인 /app/으로 넘어간다. 주소창에 /user 쳐야 함 )

user1의 role이 user이기 때문에 user에 접근 가능하지만 member로 접근하고 싶으면 workbench로 가서 role을 ROLE_MEMBER로 바꾸면 member로 접근 가능하다.

로그아웃은 /logout으로

 

role이 user일때
workbench

 

콘솔창에는 login한 username이 출력이 된다.

 

 

 

role이 member일때

 

user2,4567 로 가입하고 role을 ROLE_MEMBER로 변경한 뒤 로그인 하여 /member로 연결해봤다.

 

 

 

 

 

 

SecurityConfig로 가서 로그인을 수정해준다.

 

CustomLoginSuccessHandler에 빨간 줄이 그이는데 마우스를 올려 create를 눌러준다.

그럼 밑에 사진처럼 자동으로  class가 생긴다

 

auth 밑에 새로운 loginHandler라는 패키지를 만들고 위에서 만들어진 CustomLoginSuccessHandler를 그 패키지 안에 넣어준다.

 

 

그리고 인증이 성공하면 나오는 코드를 출력시켜 보고 collection도 작성해본다.

 

 

로그인이 성공하면 리다이렉팅 되도록 작성한다.

 

프로젝트를 실행해본다. 주소창에 아무렇게나 치고 엔터를 누르면 로그인 화면으로 넘어간다.

 

그리고 로그인을 하면 해당 페이지로 넘어가게 된다.

 

- 로그아웃 시