페이지 권한 설정
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]]]}
'JAVA > SpringBoot Shoppingmall' 카테고리의 다른 글
[VSCODE] JPA CASCADE, ORPHAN (영속성 전이) (0) | 2022.06.27 |
---|---|
[VSCODE] SpringBoot 쇼핑몰(MVN) Entity 연관 관계 매핑 (0) | 2022.06.27 |
[VSCODE] SpringBoot 쇼핑몰(MVN) 로그인/로그아웃 기능 구현 (0) | 2022.06.27 |
[VSCODE] SpringBoot 쇼핑몰(MVN) 회원가입 기능 구현 (0) | 2022.06.27 |
[VSCODE] SpringBoot 쇼핑몰(MVN) Sring Security (0) | 2022.06.27 |