[SPRING] 스프링 보안의 여러 antmatchers
SPRING스프링 보안의 여러 antmatchers
나는 다음과 같은 다섯 명의 antmatcher가있는 콘텐츠 관리 시스템에서 작업합니다.
http.authorizeRequests()
.antMatchers("/", "/*.html").permitAll()
.antMatchers("/user/**").hasRole("USER")
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/admin/login").permitAll()
.antMatchers("/user/login").permitAll()
.anyRequest().authenticated()
.and()
.csrf().disable();
방문자가 루트 경로 (/ *)에있는 모든 사이트를 볼 수 있고 사용자는 (/ user) 만 볼 수 있고 admin (/ admin) 만 볼 수 있으며 사용자와 사용자는 각각 두 개의 로그인 페이지가 있음을 의미한다고 가정합니다. 관리자.
이 코드는 admin 섹션을 제외하고는 정상적으로 작동하는 것 같습니다. 작동하지 않지만 반환 액세스가 예외를 거부했습니다.
해결법
-
==============================
1.나는 그 문제가 당신의 규칙의 순서대로 있다고 믿는다.
나는 그 문제가 당신의 규칙의 순서대로 있다고 믿는다.
.antMatchers("/admin/**").hasRole("ADMIN") .antMatchers("/admin/login").permitAll()
규칙의 순서가 중요하며보다 구체적인 규칙이 우선되어야합니다. 이제 / admin으로 시작하는 모든 작업에는 / admin / login 경로 (/ admin / login이 / admin / ** 규칙에 이미 일치하므로 두 번째 규칙이 무시되므로) ADMIN 역할의 인증 된 사용자가 필요합니다.
따라서 로그인 페이지에 대한 규칙은 / admin / ** 규칙 앞에 있어야합니다. E.G.
.antMatchers("/admin/login").permitAll() .antMatchers("/admin/**").hasRole("ADMIN")
from https://stackoverflow.com/questions/30819337/multiple-antmatchers-in-spring-security by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring Data JPA - 프로그래밍 방식으로 JpaRepository 기본 패키지를 설정하는 방법 (0) | 2019.07.11 |
---|---|
[SPRING] JUnit- Spring @Async void 서비스 메소드 테스트 (0) | 2019.07.11 |
[SPRING] Spring : POST body에서 매개 변수를 얻는 방법? (0) | 2019.07.10 |
[SPRING] @SpringBootConfiguration과 @Configuration의 차이점은 무엇입니까? (0) | 2019.07.10 |
[SPRING] 스프링 부트는 새로운 스케줄 작업을 동적으로 추가합니다. (0) | 2019.07.09 |