μ€νλ§ μν리ν°λ‘ κ΄λ¦¬μ, κ°λ°μ κΆν μΆκ° μ€μ νκΈ°
κ°λ¨νκ² λΆκ°μ μΈ κΆν μ€μ μ ν΄λ³΄μ.
Secured
μΌλ°μ μΌλ‘ κΈλ‘λ²ν κΆν μ²λ¦¬λ SecureConfig ν΄λμ€μ configure() λ©μλμμ 체μ΄λμ ν΅ν΄ μ€μ νλ€. νμ§λ§ μ΄λ Έν μ΄μ λ§ μ€μ νλ€λ©΄ 컨νΈλ‘€λ¬μμλ κ° μμ² λ©μλ λ³ κΆν μ€μ μ΄ κ°λ₯νλ€.
SecureConfigμ μ΄λ Έν μ΄μ μ€μ νκΈ°
ν΄λμ€ λ 벨μ @EnableGlobalMethodSecurity
μ΄λ
Έν
μ΄μ
μ μΆκ°νλ€.
HTML
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true) // secured μ΄λ
Έν
μ΄μ
νμ±ν, preAuthorize, postAuthorize μ΄λ
Έν
μ΄μ
νμ±ν
public class SecurityConfig extends WebSecurityConfigurerAdapter{
...
}
securedEnabled = true
: 컨νΈλ‘€λ¬ μμ² λ©μλμμ@Secured
μ΄λ Έν μ΄μ μ μ€μ ν μ μλ€.prePostEnabled = true
: 컨νΈλ‘€λ¬ μμ² λ©μλμμ@PreAuthorize
,@PostAuthorize
μ΄λ Έν μ΄μ μ μ€μ ν μ μλ€.
컨νΈλ‘€λ¬ μμ² λ©μλ λ³ κΆν μ€μ νκΈ°
컨νΈλ‘€λ¬μ μμ² λ©μλμ @Secured
, @PreAuthorize
@PostAuthorize
λ±μ μ΄λ
Έν
μ΄μ
μ λΆμ¬ κ° μμ² λ©μλ λ³ κΆν μ²λ¦¬λ₯Ό νλ€.
@Controller
public class IndexController {
@Secured("ROLE_ADMIN")
@GetMapping("/info")
public @ResponseBody String info() {
return "κ°μΈ μ 보";
}
@PreAuthorize("hasRole('ROLE_MANAGER') or hasRole('ROLE_ADMIN')") // κΆν μ¬λ¬κ° μ€μ νκΈ° μν΄ 'hasRole() or hasRole()'
@GetMapping("/data")
public @ResponseBody String data() {
return "λ°μ΄ν° μ 보";
}
}
@Secured
: ν΄λΉ μ΄λ Έν μ΄μ μ λΆμΈ μμ² λ©μλμλ§ κ°λ¨νκ² κΆν μ€μ @PreAuthorize
: ν΄λΉ μ΄λ Έν μ΄μ μ λΆμΈ μμ² λ©μλκ° μ€νλκΈ° μ μ 쑰건μ κ²μ¬- μΌλ°μ μΌλ‘
@PreAuthorize
보λ€λ@Secured()
λ‘ κ²μ¬νλ κ²½μ°κ° λ§μ
μ΄ κ²°κ³Ό κ΄λ¦¬μ, κ°λ°μ κ³μ λ³λ‘ μ κ·Όν μ μλ νμ΄μ§κ° λ¬λΌμ§λ€!