jhhan의 블로그

Spring_Security 응용 - 로그인 페이지 만들기(2) 본문

Spring

Spring_Security 응용 - 로그인 페이지 만들기(2)

jhhan000 2020. 3. 3. 22:32

원래 이번편까지 (1)에 할려고 했는데 길어질 것 같아서 이렇게 나눠서 진행합니다.

 

저번 편을 보셨다면 프로젝트 생성은 완료되셨을 것입니다.

이제 직접적으로 로그인을 해보겠습니다.

 

우선 프로젝트 파일 중에서 pom.xml을 찾아서 다음과 같이 추가합니다.

pom.xml에 추가할 dependency

dependency를 추가하는 부분인데 없는 것만 추가하시면 됩니다.

그런 다음 src/main/java/com.example.설정한이름 파일 밑에 SecurityConfig라는 클래스를 하나 생성합니다.

(SecurityConfig말고 다른 이름을 하셔도 됩니다.)

그리고 다음과 같이 SecurityConfig클래스를 작성합니다.

  • antMatchers("/adminOnly").hasAuthority("ROLE_ADMIN") : /adminOnly라는 주소에는 ADMIN이라는 Role을 가진 사람만 접근할 수 있습니다.
  • anyRequest().authenticated() : 인증된 사람만 접근할 수 있게 합니다.
  • antMatchers("/**").permitAll() : "/" 포함하는 주소에는 누구든지 접근할 수 있습니다.
  • 정확하지 않을 수 있습니다.. 좀 더 자세한 정보는 다른 블로그나 해당 문서를 참고하시기 바랍니다..
  • void configure(HttpSecurity http)에서는 화면을 설정하고
  • void configure(AuthenticationManagerBuilder auth)에서는 유저를 설정합니다..
  • admin이라는 아이디와 비밀번호는 1234이고 role은 ADMIN인 유저와
  • guest라는 아이디와 비밀번호는 guest이고 role은 GUEST인 유저를 생성합니다.
  • BCryptPasswordEncoder에서는 비밀번호를 암호화합니다.

다음으로 src/main/java/com.example.설정한이름 밑에 Controller를 하나 생성합니다.

저는 TestController라고 설정했습니다.(원하시는 이름으로 진행하시면 됩니다.)

다음으로 resources/templates 밑에 home.html 파일을 추가합니다.

  • 위의 TestController 코드에서 return "home"; 인 부분과 맞춰야 합니다.
  • home으로 하지 않고 다른 이름을 원하신다면 이 부분도 같이 바꿔줘야 합니다.

그리고 home.html을 이렇게 작성합니다.

  • hasRole('ADMIN') : ADMIN이라는 role을 가진 사람만 보이게 합니다.
  • isAuthenticated() : 로그인을 한 사람한테만 보여줍니다.
  • (아마 맞을 겁니다..)

그리고 실행을 하고 localhost:8080으로 들어가시면

이 화면을 보실 수 있습니다.

  • 만약, 8080port가 싫으시다면(혹은 안되신다면) application.properties 파일에 들어가서

  • 다음과 같이 추가하시면 다른 포트를 사용할 수 있습니다.

이제 login버튼을 누르시면

이 화면이 보이실 겁니다.

그 상태에서 admin으로 로그인을 하시면

이 화면을 볼 수 있습니다. 그리고 adminOnly를 클릭하시면

이런 화면을 보실 수 있습니다.

다음 로그아웃 하시고 guest로 로그인 하시면

다음과 같은 화면이 나타납니다.

여기서 주소 옆에 /adminOnly라고 입력한 후 진행하시면

이런 화면이 나오실 겁니다.

ADMIN이라는 Role을 가진 사람만 접속할 수 있기 때문에 GUEST라는 Role을 가진 guest는 접근을 할 수 없습니다.

 

 

 

참고 자료

http://yoonbumtae.com/?p=1184

 

 

다음 포스트는 DB를 연결해서 진행해보겠습니다.(참고로 DB는 MariaDB를 사용할 것입니다.)