>일반적인 문제 >네트워크 권한 제어를 구현하는 방법

네트워크 권한 제어를 구현하는 방법

(*-*)浩
(*-*)浩원래의
2019-10-26 09:47:564318검색

네트워크 권한 제어를 구현하는 방법

대략적인 URL 수준 권한 제어

권한 제어는 크게 세분화된 URL 수준 권한 제어와 세분화된 방법 수준 권한 제어로 구분됩니다. (추천 학습: 웹 프론트 엔드 비디오 튜토리얼)

버튼을 클릭하든 메뉴 항목을 클릭하든 백그라운드 시스템에서의 작업은 서버 측 리소스에 액세스하며, 서버 리소스를 식별하는 것은 URL. 서버 리소스에 대한 사용자의 작업 권한을 제어하는 ​​방법은 무엇입니까? 데이터베이스에는

사용자 테이블과 권한 제어 테이블이라는 두 개의 테이블이 있습니다. 사용자 테이블의 사용자는 권한 제어 테이블의 해당 권한과 연관되어 있으며, 사용자의 해당 권한 목록에 현재 액세스한 URL 주소가 없는 경우 현재 사용자에게 해당 권한이 있는지 여부를 확인하는 데 사용됩니다. , 권한이 부족하다는 메시지가 표시됩니다. 사용자의 해당 권한 목록에 해당 URL 주소가 포함되어 있으면 해당 사용자의 접근이 허용됩니다.

간단히 말하면, URL 기반의 대략적인 권한 제어는 사용자, 권한 및 액세스 URL 간의 관계를 데이터베이스에 저장하는 것입니다. 현재 사용자가 URL 주소에 액세스하면 데이터베이스를 쿼리하여 현재 사용자의 권한을 확인합니다. 이 URL을 포함할지 여부입니다. 포함되어 있으면 액세스가 허용됩니다. 포함되지 않으면 권한이 부족하다는 메시지가 표시됩니다.

세분화된 메서드 수준 권한 제어

세분화된 메서드 수준 권한 제어는 대략적인 권한 제어보다 더 세부적입니다. 마찬가지로 백그라운드 시스템에서 버튼이나 메뉴 항목을 클릭하면 서버 측의 URL 리소스에 액세스하게 되며, 이 URL 주소에는 프레젠테이션 계층, 비즈니스 계층 및 DAO 데이터 계층의 메서드가 포함됩니다. 대략적인 방법은 데이터 테이블에서 현재 사용자의 관련 권한을 쿼리하고 이를 비교하여 사용자를 해제할지 여부를 결정하는 것입니다. 차이점은 사용자 정의 주석을 기반으로 세분화된 권한 제어가 구현된다는 것입니다.

예: 비즈니스 계층의 메서드에 주석 @Permission("사용자 정의 권한 이름")을 추가합니다. 이 주석에는 메서드에 액세스하는 데 필요한 권한 정보가 포함되어 있으며 데이터베이스에도 두 개의 테이블이 생성됩니다. 그리고 권한 테이블에 있는 권한 이름은 방금 메소드에 추가한 Annotation에 있는 Custom 이름과 일치해야 합니다. 직설적으로 말하면 권한 정보를 권한 테이블에 기술한 후 Annotation 형식으로 추가합니다. 이는 사용자 테이블의 사용자에 해당하는 권한 테이블의 권한도 데이터 테이블에 연결되어 사용자가 액세스할 수 있는 권한 제어의 목적을 달성합니다. 테이블을 조합하여 제어합니다.

기본 구현 원칙은 다음과 같습니다. spring은 사용자가 URL 주소에 액세스할 때 각각에 대해 실제 객체에 액세스할 때 프록시 객체를 반환할 수 있습니다. 메서드를 사용하면 프록시 개체는 데이터베이스에 쿼리하여 현재 사용자가 주석에 정의된 권한을 가지고 있는지 확인합니다. 실제 개체의 프록시 개체이기 때문에 이러한 일련의 작업을 구현할 수 있으며 최종적으로 권한이 있는지 여부를 확인할 수 있습니다. . 사용자 액세스를 제어합니다.

간단히 말하면, 사용자 정의 주석과 결합된 프록시 객체를 통해 세분화된 권한 제어가 달성됩니다. 사용자가 대상 객체의 메소드에 액세스하면 해당 메소드에 권한 주석 정보가 추가되고 대상에 대한 프록시 객체가 생성됩니다. 실제 개체에 액세스할 때 개체는 먼저 프록시 개체에 액세스하고 프록시 개체는 데이터베이스로 이동하여 권한 데이터를 쿼리하여 사용자에게 주석에 설명된 필수 권한이 ​​있는지 확인합니다. 접근권한이 있는 경우 접근이 허용되며, 접근권한이 없는 경우 접근이 차단되며 권한이 부족하다는 메시지가 표시됩니다.

위 내용은 네트워크 권한 제어를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.