Spring Projcect/학습 관리 시스템 & 백오피스 구축

Chapter 09. 관리자 로그인 구현

계란💕 2022. 8. 20. 15:40

  Ex) 초기 설정

    - 먼저, 관리자 페이지를 구성한다. ex)admin,backoffice, cms가 들어간다. http://admin.fastlms.co.kr

    - 서브 도메인을 따로 둘 수도 있다.  http://www.fastlms.co.kr/admin

    - adminService를 만든다. (member쪽을 만들었듯이)

      -> AdminMainController

java
열기
html
열기

    - Security 클래스에 permitAll()로 등록되어 있지 않아서 로그인한 다음에야 admin/main 페이지에 접속이 가능하다.

 

 

   ========================================= 오류 ==========================================

    - 오류: 로그인 안해도 바로 관리자 화면이 뜬다.

    - 원인: ?

html
열기

 

    - AdminMemberController

java
열기

 

    - list 파일 만든다.

html
열기

 

    - 위 화면에서 로그아웃 누르면?

 

 

    Ex) 관리자 권한과 사용자 권한을 구분하려면?

     - Entity에 필드 추가 - 관리자인지 회원인지 여부를 나타낸다.

java
열기

 

    cf) yml 파일에 jpa 설정이 있기 때문에 엔티티에 데이터를 추가하면 DDL을 자동 생성하고 데이터베이스까지 저장한다.

      - 데이터베이스에 저장된 계정 중 하나를 관리자 user(true)로 만든다. 

 

 

 

 

  Ex) 회원 가입 후, 이메일이 활성화 되는 것은 한 번만 가능하도록 수정

    - Impl 클래스 

      -> 회원 가입했을 때 받은 회원 가입 메일의 링크를 들어가면 활성화 페이지가 보인다. 이는 한 번만 가능해야한다.

       -> 따라서 impl클래스를 수정한다. (여러 번 활성화되지 않도록한다.)

 

    - impl - emailAuth()메서드를 수정한다.

java
열기

  Note) 실행 결과

    - 아래처럼 실패라고 나와야 정상이다.

 

 

   Ex)

    - loadUserByUserName() 메서드에서 user가 관리자인 경우는?

      -> "ROLE_ADMIN"을 추가한다.

      -> SimpleGrantedAuthority("ROLE_USER"): GrantedAuthority 인터페이스를 구현한 클래스이다.

java
열기

 

 

    - SecurityConfig에 관리자 권한 관련해서 내용을 추가한다.

      -> AntPathRequestMatcher(String pattern): 대소문자를 구분하지 않고 모든 http 메서드와 일치하는 특정 패턴으로 Matcher을 만든다.

java
열기

    - 관리자가 아닌 일반 계정으로 로그인

 

 

    - 다음과 같이 관리자 페이지를 들어가려고 시도하면 오류가 난다. => 추가 작업을 한다.

 

    - 관리자 계정 접속: 관리자 메인 화면 접속 가능

 

    - 일반계정 처리 작업

      -> SecutiryConfig 클래스 수정 

      -> logoutSuccessUrl("/"): 로그아웃을 성공하면 메인 페이지로 이동한다.

       -> invalidateHttpSession(true): 로그아웃 했으니까 세션을 초기화한다. 

java
열기

 

    - 메인 컨트롤러에 추가

java
열기

 

    - denied 파일 추가한다.

html
열기

  Note) 회원이 관리자 페이지에 접근하는 경우 - 실행 결과