반응형
봄맞이 보안에 개미 사냥꾼이 여럿 등장합니다.
저는 다음과 같은 5개의 앤트매처(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)만 볼 수 있으며, 로그인 페이지는 두 개가 있습니다.
관리 섹션을 제외하고는 코드가 정상적으로 작동하는 것 같습니다. 작동하지 않지만 반환 액세스 거부 예외입니다.
문제는 당신의 규칙에 따른 것이라고 생각합니다.
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/admin/login").permitAll()
규칙의 순서가 중요하고 좀 더 구체적인 규칙이 먼저입니다.이제부터 시작되는 모든 것은/admin
관리자 역할을 가진 인증된 사용자가 필요할 것입니다./admin/login
경로(왜냐하면)/admin/login
에 의해 이미 일치합니다./admin/**
규칙(rule) 및 따라서 두 번째 규칙은 무시됩니다).
따라서 로그인 페이지에 대한 규칙은 다음보다 앞에 있어야 합니다./admin/**
규칙. 예.
.antMatchers("/admin/login").permitAll()
.antMatchers("/admin/**").hasRole("ADMIN")
언급URL : https://stackoverflow.com/questions/30819337/multiple-antmatchers-in-spring-security
반응형
'programing' 카테고리의 다른 글
익명 블록 안에 선택 결과 표시 (0) | 2023.10.30 |
---|---|
스타일시트와 xslt proc로 xslt를 사용하여 xml에서 요소를 제거하는 방법은 무엇입니까? (0) | 2023.10.30 |
내용 편집 가능한 div의 새 줄에서 이벤트 트리거 (0) | 2023.10.30 |
열거형에서 사용하는 정수형을 변경하는 방법(C++)? (0) | 2023.10.30 |
jQuery, 전체 요소의 html을 가져옵니다. (0) | 2023.10.30 |