이 기사는 다음과 같이 Spring Security가 통제 권한 부여 방법을 소개하고 다음과 같이 귀하와 공유합니다.
권한 부여 방법을 사용하여 승인을 구성하십시오
각 스프링 보안 제어 승인 표현식 (표현식이라고 함)은 실제로 API의 인증 메소드에 해당하며, 이는 요청 된 URL 권한이 구성 될 때 처리 방법입니다. 예를 들어:
@OverRideProtected void configure (httpsecurity http)는 예외를 {http.authorizerequests () .antmatchers (httpmethod.delete, "/user/*").antmatchers ("/index "). .AntMatchers ( "/pay"). Hasanyrole ( "we_chat_pay", "ali_pay") .antmatchers ( "/debug"). HasipAddress ( "192.168.1.0/24");}.승인 표현을 사용하여 여러 권한에 대한 요청을 승인합니다
그렇다면 언제 승인 처리를 위해 표현식을 사용해야합니까? 보안 애플리케이션의 권한 요구 사항은 종종 복잡하고 다양합니다. 예를 들어, 프로젝트의 디버깅 요청은 방문자가 두 관리자 권리를 모두 가지고 있으며 회사의 내부 LAN을 통해이를 액세스해야합니다. 이러한 요구 사항에 따라 보안 API가 제공하는 방법은 이러한 승인 방법을 지속적으로 호출 할 수 없기 때문에 충족 될 수 없습니다.
승인 표현을 사용 하여이 문제를 해결할 수 있습니다.
@OverRideProtected void configure (httpsecurity http)는 예외를 {http.authorizeRequests () .antMatchers ( "/debug") .access ( "hasrole ( 'admin') 및 hasipaddress ( '192.168.1.0/24')")승인 표현 예
| 표현 | 설명 |
|---|---|
| refimitall | 사실을 영원히 돌려주십시오 |
| DENYALL | False를 영원히 돌려주십시오 |
| anonyous | 현재 사용자가 익명 사용자 인 경우 True를 반환하십시오. |
| 기억하십시오 | 현재 사용자가 기억하는 경우 true를 반환하십시오 |
| 인증 | 현재 사용자가 익명 (인증) 사용자가 아닌 경우 True를 반환하십시오. |
| 완전한 | 현재 사용자가 익명이 아니거나 기억하지 않으면 true 반환 |
| Hasrole (역할) | 현재 사용자 권한 컬렉션에 지정된 역할 권한이있는 경우 (일치 할 때, 'role_'는 지정된 권한 전에 추가됩니다. |
| Hasanyrole (Role1, Role2, ...) | 현재 사용자 권한 컬렉션에 역할 권한이있는 경우 TRUE RECONS |
| hasauthority (권위) | 현재 사용자 권한이 현재 사용자 권한 수집에 권한이있는 경우 ( "권한"권한이 있는지 여부)가있는 경우 true를 반환하십시오. |
| Hasanyauthority (권위) | 현재 사용자 권한 수집에 권한이있는 경우 TRUE RETOD |
| hasipaddress ( "192.168.1.0/24") | 요청 된 IP 일치를 보낼 때 FanHui True |
역할 기반 액세스 제어 RBAC (역할 기반 액세스 제어)
위의 방법이 대부분의 응용 프로그램의 보안 승인 관리를 충족 할 수 있다고 생각할 것입니다. 그러나 실제로 엔터프라이즈 수준의 응용 프로그램의 승인은 종종 데이터베이스 데이터의 동적 변경 사항을 기반으로합니다. 문자열 스 플라이 싱이 위에서 사용되는 경우 개발자에게 매우 비우호적 일뿐 만 아니라 (인사의 모든 변경으로 인해 코드를 변경해야한다는 것을 의미합니다. 그래서 어떻게 해결 하는가?
데이터 모델
일반적인 RBAC 데이터 모델에는 일반적으로 5 개의 테이블 (3 개의 엔티티 테이블과 2 개의 관계 테이블)이 필요합니다. 세 엔티티 테이블에는 사용자 테이블, 역할 테이블 및 리소스 테이블이 포함됩니다. 두 관계 테이블에는 포함됩니다. 그들 사이의 관계는 다음과 같습니다.
RBAC 데이터 모델
사용자 테이블
모든 사용자에게는 사용자 테이블이 있어야합니다. 회사가 직원을 변경하면 인적 자원과 같은 비즈니스 요원이 데이터 테이블을 추가하고 삭제합니다.
역할 목록
사장, 부사장, 부서 관리자 등과 같이 회사의 신분이 무엇인지, 회사의 특정 상황에 따라 테이블에서 데이터를 운영하는 비즈니스 요원이 있습니다.
리소스 목록
권한 제어가 필요한 자원을 저장하십시오. 제어 승인을 사용할 때 실제로 URL을 사용하기 때문에 비즈니스 담당자는 URL에 따라 데이터 항목을 구성하지 않고 대신 뷰 인터페이스 형식으로 작동합니다. 따라서이 표에서는 비즈니스 담당자와 권한에 의해 제어되는 URL에 제시된 메뉴와 버튼이 있습니다.
사용자 롤 관계 테이블
사용자 테이블과 역할 테이블 (사용자 ID 및 역할 ID) 사이에는 다수의 관계가 있습니다. 사용자는 여러 역할이 될 수 있으며 (사용자는 부서 관리자 및 관리자 일 수 있음) 역할은 종종 여러 사용자에게 해당합니다.
역할 재료 관계 테이블
역할 테이블과 리소스 테이블 ()도 다수의 관계입니다. 역할은 여러 리소스 (버튼 또는 메뉴 등)에 액세스 할 수 있으며 여러 역할로 리소스에 액세스 할 수 있습니다.
Spring Security는 또한 이와 같이 업무를 수행하기 위해 사용자 정의 표현을 지원합니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.