티스토리 뷰

728x90

인가 API - 권한 설정과 표현식

권한 설정은 선언적 방식과 동적 방식으로 나눌 수 있다.

선언적 방식

  • URL - http.antMatchers("/users/**").hasRole("USER")
  • Method - @PreAuthroize("hasRole(`USER`)")

동적 방식 - DB 연동 프로그래밍

@Override
protected void configure(HttpSecurity http) throws Exception {
    //인가정책
    http
            .antMatcher("/shop/**")
            .authorizeRequests()
            .antMatchers("/shop/login", "/shop/users/**").permitAll()
            .antMatchers("/shop/user").hasRole("USER")
            .antMatchers("/shop/admin/pay").hasRole("ADMIN")
            .antMatchers("/shop/admin/**").access("hasRole('ADMIN') or hasRole('SYS')")
            .anyRequest().authenticated();
}

설정 시에는 구체적인 경로가 먼저 오고 그것보다 큰 범위의 경로가 뒤에 오도록 해야 한다!

ex) /shop/admin/pay ,  /shop/admin/**

위에 설정한 인가 정책을 통과해야만 자원에 접근할 수 있다.

 

메모리 방식으로 사용자를 생성하거나 권한을 설정할 수 있다. 개발할 때 편리할거 같네

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.inMemoryAuthentication().withUser("user").password("{noop}1111").roles("USER");
    auth.inMemoryAuthentication().withUser("sys").password("{noop}1111").roles("SYS");
    auth.inMemoryAuthentication().withUser("admin").password("{noop}1111").roles("ADMIN");
}

참고

https://www.inflearn.com/course/%EC%BD%94%EC%96%B4-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0

 

스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security - 인프런 | 강의

초급에서 중.고급에 이르기까지 스프링 시큐리티의 기본 개념부터 API 사용법과 내부 아키텍처를 학습하게 되고 이를 바탕으로 실전 프로젝트를 완성해 나감으로써 스프링 시큐리티의 인증과

www.inflearn.com

 

728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함