권한 부여 요청(요청 승인)
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
String... antPatterns) {
String method = httpMethod == null ? null : httpMethod.toString();
List
for (String pattern : antPatterns) {
matchers.add(new AntPathRequestMatcher(pattern, method));
}
return matchers;
}
이 를 통 해 알 수 있 듯 이 최종 적 으로 돌아 온 것 은 하나의
RequestMatcher
목록 이다.실제로 SpringSecurity 는 작업 과정 에서 RequestMatcher 대상 을 이용 하여 경로 매 칭 을 할 수 있다.ANT 스타일 의 경로 일치 모드 를 제외 하고 정규 표현 식 을 기반 으로 하 는 경로 일치 모드 를 사용 할 수 있 습 니 다.대응 하 는 방법 은
regexMatchers
(..)입 니 다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.