권한 부여 요청(요청 승인)

2913 단어 SpringSecurity
저희 사례 는 현재WebSecurityConfigurerAdapter의 기본 HttpSecurity 대상 설정 을 사용 하고 있 습 니 다.이 설정 은 응용 프로그램의 모든 url 접근 을 검증 해 야 합 니 다.어떤 URL 이 권한 검증 이 필요 하고 필요 하지 않 은 지 사용자 정의 할 수 있 습 니 다.우리 의 Security Config 클래스 에 configure(HttpSecurity http)방법 을 덮어 쓰 면 됩 니 다.
protected void configure(HttpSecurity http ) throws Exception {
             http
                  .authorizeRequests()            1                                                   
                        .antMatchers( "/resources/**", "/signup" , "/about").permitAll()  2
                        .antMatchers( "/admin/**").hasRole("ADMIN" )                    3    
                        .antMatchers( "/db/**").access("hasRole('ADMIN') and hasRole('DBA')")  4
                        .anyRequest().authenticated()        5
                                         
                        .and()
                   // ...
                  .formLogin();
      }
1.http.authorizeRequests()방법 은 여러 가지 하위 방법 이 있 고 모든 하위 매 칭 기 는 성명 의 순서에 따라 작용 할 것 이다.
2.사용자 가 방문 할 수 있 는 여러 url 모드 를 지정 합 니 다.특히 모든 사용 자 는'/resources'로 시작 하 는 url 자원 이나'/signup'또는 about 에 접근 할 수 있 습 니 다.
3."/admin"으로 시작 하 는 모든 요청 은 사용자 가"ROLE"를 가지 도록 제한 합 니 다.ADMIN 캐릭터.우리 가 사용 하 는 hasRole 방법 에 도 불구 하고"ROLE"에 들 어 갈 필요 가 없습니다.접두사
4."/db"로 시작 하 는 모든 요청 은 사용자 에 게"ROLE"를 요구 합 니 다.ADMIN"과"ROLEDBA 캐릭터.
5.일치 하 는 다른 url 요청 이 없 으 면 사용자 가 검증 되 어야 합 니 다.
소스 코드 해독
이 사례 에서 우 리 는antMatchers방법 으로 어떤 요 구 를 놓 칠 수 있 고 어떤 요 구 를 검증 해 야 하 는 지 정의 했다.antMatchers 는 Ant 스타일 의 경로 매 칭 모드 를 사용 합 니 다.(다음 절 에 자세히 설명 하 겠 습 니 다.)이 방법 은AbstractRequestMatcherRegistry에서 정 해 졌 습 니 다.우 리 는 이 방법의 소스 코드 를 살 펴 보 겠 습 니 다.
public C antMatchers(String... antPatterns) {
   return chainRequestMatchers(RequestMatchers.antMatchers(antPatterns));
}
이 방법 은 내부 에서RequestMatchers대상 의 정적 방법 인 antMatchers 방법 을 호출 했 습 니 다.소스 코드 는 다음 과 같 습 니 다.
public static List antMatchers(HttpMethod httpMethod,
      String... antPatterns) {
   String method = httpMethod == null ? null : httpMethod.toString();
   List matchers = new ArrayList();
   for (String pattern : antPatterns) {
      matchers.add(new AntPathRequestMatcher(pattern, method));
   }
   return matchers;
}
이 를 통 해 알 수 있 듯 이 최종 적 으로 돌아 온 것 은 하나의RequestMatcher목록 이다.실제로 SpringSecurity 는 작업 과정 에서 RequestMatcher 대상 을 이용 하여 경로 매 칭 을 할 수 있다.
ANT 스타일 의 경로 일치 모드 를 제외 하고 정규 표현 식 을 기반 으로 하 는 경로 일치 모드 를 사용 할 수 있 습 니 다.대응 하 는 방법 은regexMatchers(..)입 니 다.

좋은 웹페이지 즐겨찾기