경주장
[인가 API] 권한 설정 본문
스프링 시큐리티의 권한 설정은
애플리케이션 빌드 순간에 결정되는 선언적 방식과 애플리케이션 구동중에 동적으로 설정하는 방식 두가지를 지원하며
각각 권한의 적용 범위로써 URL, Method를 설정 할 수 있다.
- 선언적 방식
- URL
- http.antMatchers("/users/**").hasRole("USER)
- Method
- @PreAuthorize("hasRole("USER")")
- URL
- 동적 방식 - DB 연동 프로그래밍
- URL/Method - To be Studied...
http
.antMatcher("/shop/**")
.authorizeRequests()
.antMatchers("/shop/login", "/shop/users/**").permitAll()
.antMatchers("/shop/mypage").hasRole("USER")
.antMatchers("/shop/admin/pay").access("hasRole('ADMIN')")
.antMatchers("/shop/admin/**").access("hasRole('ADMIN') or hasRole('SYS')")
.anyRequest().authenticated();
* Note - 구체적인 경로를 위에 설정할 것
인가 API 표현식
메소드 | 동작 |
authenticated() | 인증된 사용자의 접근을 허용 |
fullyAuthenticated() | 인증된 사용자의 접근을 허용, rememberMe 인증 제외 |
permitAll() | 무조건 접근을 허용 |
denyAll() | 무조건 접근을 허용하지 않음 |
anoymous() | 익명사용자(Role_anonymous)의 접근을 허용 |
rememberMe() | rememberMe 인증을 통해 인증된 사용자의 접근을 허용 |
access(String) | SpEL 표현식의 평가 결과가 true이면 허용 |
hasRole(String) | 사용자가 주어진 역할이 있다면 허용 |
hasAuthority(String) | 사용자가 주어진 권한이 있다면 허용 |
hasAnyRole(String...) | 사용자가 주어진 역할 중 어떤것이라도 있다면 허용 |
hasAnyAuthority(String...) | 사용자가 주어진 권한 중 어떤것이라도 있다면 허용 |
hasIpAddress(String) | 주어진 IP로부터 요청이 왔다면 접근을 허용 |
'스프링 > 스프링 시큐리티' 카테고리의 다른 글
[Form 인증 API] CSRF, CsrfFilter (0) | 2022.02.07 |
---|---|
[인증/인가 API] 예외 처리 및 요청 캐시 필터 (0) | 2022.02.06 |
[인증 API] SessionManagementFilter, ConcurrentSessionFilter (0) | 2022.02.06 |
[인증 API] 세션 고정보호, 세션 생성 정책 (0) | 2022.02.06 |
[인증 API] 동시 세션제어 (0) | 2022.02.06 |