728x90
반응형
1. 표현식
메소드 | 동작 |
authenticated() | 인증된 사용자의 접근을 허용 |
fullyAuthenticated() | 인증된 사용자의 접근을 혀용, rememberMe(로그인 상태유지) 인증 제외 |
permitAll() | 무조건 접근 허용 |
denyAll() | 무조건 접근 허용하지 않음 |
anonymous() | 익명 사용자만 접근 허용 (인증된 사용자는 접근 불가) |
rememberMe() | 기억하기를 통해 인증된 사용자의 접근 허용 |
access(String) | 주어진 SpEL 표현식의 평가 결과가 true이면 접근을 허용 |
hasRole(String) | 사용자가 주어진 역할이 있다면 접근을 허용 -> ex) USER |
hasAuthority(String) | 사용자가 주어진 권한이 있다면 접근을 허용 -> ex) ROLE_USER |
hasAnyRole(String...) | 사용자가 주어진 권한이 있다면 접근을 허용 (AND) |
hasAnyAuthority(String...) | 사용자가 주어진 권한 중 어떤 것이라도 있다면 접근을 허용 (OR) |
hasOpAddress(String) | 주어진 IP로부터 요청이 왔다면 접근을 허용 |
2. 권한 설정(URL )
http.antMatchers("/users/**").hasRole("ROLE_REMP")
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
@RequiredArgsConstructor
public class SecurityConfig {
...
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
...
http.antMatcher("/shop/**") // 생략 시 전체경로 "/**"
.authorizeRequests()
.antMatchers("/shop/login/**").permitAll()
.antMatchers("/shop/mypage").hasRole("ROLE_USER")
.antMatchers("/shop/admin/pay").access("hasROLE('ROLE_REMP')")
.antMatchers("/shop/adminPay/**").access("hasRole('ROLE_ADMIN') or hasRole('SYS')")
.anyRequest().authenticated();
// 설정 시 구체적인 경로가 먼저 오고 그것 보다 큰 범위의 경로가 뒤에 오도록 설정 해야 함.
return http.build();
}
...
}
3. 권한 설정(Method, Controller)
@PreAuthorize("hasRole('USER')") // 해당 컨트롤러의 최소 권한은 USER
@Controller
public class MemberController {
@PreAuthorize("hasRole('REMP')") // 해당 메서드의 최소 권한은 REMP
public void rempPage(){
System.out.println("REMP 이상의 권한을 가진 사용자만 접근 가능");
}
}
Reference
https://www.inflearn.com/course -> 11) 권한설정과 표현식
728x90
반응형
'Spring > Spring Security' 카테고리의 다른 글
[Spring Secururity ERROR] 스프링 빈 순환 참조 에러 The dependencies of some of the beans i (1) | 2022.10.30 |
---|---|
[Spring Security] Spring Security 설정하기 (0) | 2022.10.29 |
[Spring Security] 동시 로그인 제한하기(동시 세션 제어) (0) | 2022.10.28 |
[Spring Security] Remember Me 인증(로그인 상태 유지) (0) | 2022.10.27 |
[Spring Security] WebSecurityConfigurerAdapter Deprecated 해결 (0) | 2022.10.27 |