페이지 권한 설정

Codren·2021년 9월 25일
0

Spring Boot 쇼핑몰

목록 보기
14/32

Section 1. 페이지 권한 설정

1. 상품 등록 페이지 (미완성)

  • ADMIN (관리자) 계정만 접근할 수 있는 상품 등록 페이지




2. 상품 등록 페이지 접근 Controller

  • 상품 등록 페이지에 접근하는 Controller




3. AuthenticationEntryPoint

  • AuthenticationEntryPoint 인터페이스 구현 클래스
  • 인증되지 않은 사용자가 리소스 요청 시 "Unauthorized" 에러를 발생시킴




4. SecurityConfig

  • HttpServletRequset 에 대해서 security 처리를 수행
  • anyRequest() - 위에 존재하는 url patterns 들을 제외한 나머지 요청들

  • 권한에 맞지 않는 사용자가 리소스에 접근할 때 수행되는 핸들러

  • static 디렉터리의 하위 파일은 인증을 무시하도록 설정




5. Role.ADMIN

  • 현재 Member 객체 생성 시 Role.USER 값이 default 로 설정되어있음
  • Role.ADMIN 으로 변경 후 동작 확인




6. 권한 설정 테스트

  • @WithMockUser() 메소드 매개변수 값

  • ADMIN 권한 접근 성공 테스트
// 회원의 이름이 admin이고 role(권한)이 ADMIN인 유저가 접근하는 것처럼 가상의 UserDetails 객체 구현
@WithMockUser(username = "admin", roles = "ADMIN")

//가상의 Get 방식 URL Request 생성
MockMvcRequestBuilders.get("/admin/item/new")

// Request & Response 메시지 콘솔창에 출력
andDo(print())

  • USER 권한 접근 실패 테스트




7. 권한 설정 테스트 print() 콘솔 출력문

  • print() 메소드 결과인 Request 메시지 일부분 추출
MockHttpServletRequest:
      HTTP Method = GET
      Request URI = /admin/item/new
       Parameters = {}
          Headers = []
             Body = null
    Session Attrs = {SPRING_SECURITY_CONTEXT=SecurityContextImpl 
    [Authentication=UsernamePasswordAuthenticationToken
    [Principal=org.springframework.security.core.userdetails.User
    [Username=admin, Password=[PROTECTED], Enabled=true, 
    AccountNonExpired=true, credentialsNonExpired=true, 
    AccountNonLocked=true, Granted Authorities=[ROLE_ADMIN]],
    Credentials=[PROTECTED], Authenticated=true, 
    Details=null, Granted Authorities=[ROLE_ADMIN]]]}

0개의 댓글