2011-10-26 3 views
7

Apex에는 세 가지 유형의 사용자를 만들 수있는 "작업 영역"이 있습니다.이 유형의 모든 것은 사실상 조직 내부에 있습니다. 또한 Apex의 개별 사이트 개발자는 자신의 사이트에 대해서만 "사용자"를 보유 할 수있는 방법이 없습니다.Oracle Apex의 권한 부여 및 사용자 역할은 무엇입니까?

내가 누락 된 항목이 있습니까?

외부 (비즈니스) 사용자가 사이트의 일부 기능에만 액세스 할 수 있어야합니다 (예 : 회계는 페이지 A와 B 만 볼 수 있지만 임원은 A, B 및 C를 볼 수 있음). C.

다른 액세스 수준의 사람들을 여러 그룹으로 보유 할 권한이 필요합니다.

작업 영역/그룹을 생성해야만이 작업을 수행 할 수 있습니까? 아니면 내 사이트에서 내부적으로 수행 할 수 있습니까?

답변

7

APEX에는 "그룹"이라는 사용자 관리 개념이 내장되어 있지만 필자는 한번도 사용하지 않았으며 설명서를 빨리 ​​읽지 않아도 액세스 제어 방법을 분명히 알지 못합니다. 여기에 대해서는 Tom's answer 참조).

데이터베이스에 사용자/역할 테이블을 작성하고이를 APEX 권한 부여 체계와 함께 사용하여 페이지에 대한 액세스를 제어해야 할 수 있습니다.

return my_auth_pkg.is_authorized (p_user => :app_user, 
            p_app_id => :app_id 
            p_page_id => :app_page_id); 

당신은 다음 사용자의 권한을 조회하기 위해 패키지를 구현하고 TRUE 또는 false를 반환할지 여부를 결정하는 것입니다 : 유형의 단일 인증 체계 "PL/SQL 함수는 부울 반환"함수 본문으로 생성 될 수있다 응용 프로그램 및 페이지 ID enter image description here

이 또한 그냥 직접 인증 제도에 대한 액세스를 확인하기 위해 SQL을 수행 할 수 있습니다 : 당신의 테이블을 표현하기 위해 내가 만들어 이름은 enter image description here

(NB "user_roles"와 "role_pages"입니다)

+0

위의 코드는 정확히 어디에 있습니까? – antonpug

+0

APEX Authorization Scheme을 작성할 때 APEX Authorization Scheme의 "Function Body"등록 정보에이를 입력합니다. –

+0

아, 그래. 그래서 그것은 또한 내 db 테이블에 적절한 정보가 포함되어 있는지 아닌지 확인하기위한 검사를 작성하는 곳입니까? – antonpug

6

Tony's answer으로 확장하고 싶습니다. 그 자체로 정확합니다. 나는 단지 당신에게 다른 방법을 보여주고 싶다. 나는 초보자라면 더 쉬울 것이고 테이블 생성은 생략 할 것이다.

응용 프로그램에서 인증 스키마로 Apex를 사용하는 경우 사용자는 작업 영역 자체의 관리를 통해 관리됩니다. 사용자를 생성, 편집 및 삭제할 수 있지만 그룹을 정의하고 사용자를 그룹에 연결할 수도 있습니다. 여러 "최종 사용자"유형의 사용자를 만들고 "임원"과 같은 몇 개의 그룹을 정의 할 수 있습니다.

Apex users and groups Creation of a group 당신이 당신의 그룹을 만든 경우, 당신은이 그룹을 할당 할 사용자로 이동하고 있음을 일단 해당 사용자

Adding a group to a user

의 그룹에 그룹을 추가 설정, 당신은 여전히 ​​인증 스키마가 필요합니다. 사실은 여기에 pl/sql 지식이 필요하지만, 간단한 API 덕분에 코딩을 최소한으로 유지할 수 있습니다. Defining an authorization based on apex groups current_user_in_group은 할당 된 그룹에 대해 현재 사용자를 확인합니다. 몇 가지 간단한 IF 구조를 사용하여 일부를 확장하면 조금 더 늘릴 수 있습니다!

이 방법을 사용하는 것이 좋을지 모르겠지만 실제로는 사용자와 그룹을 유지 관리하기 위해 APEX에 들어가야 할 사람이 필요합니다.하지만이 방법은 사용자 환경에서 허용 될 수 있습니다. . 당신은 그러나 그것을 밖으로 시작할 수 있습니다. 인증 스키마를 아주 쉽게 전환 할 수 있으며 인증 스키마를 변경하여 새로운 인증 스키마를 준수 할 수 있으므로 이후에이를 쉽고 빠르게 조정할 수 있습니다. 물론 당신의 우선 순위와 목표에 달려 있습니다.

+1

+1 좋아, 이제 기본 제공 그룹을 사용하는 방법을 알아! 대답하기 전에 apex_util 문서를 살펴 봤지만 그 기능을 보지 못했습니다. 단지 관측 : 식 1의 코드는 간단하게 줄일 수 있습니다. 'return apex_util.current_user_in_group (p_group_name => 'Executives'); ' –

+0

당신의 답을 Tom에서 구현했습니다. 액세스를 제한하는 것이 효과적입니다. 사실, 나는 더 이상 로그인 페이지에 갈 수 없다. XD 어떻게 수정해야합니까? 페이지 수준이 아닌 앱 수준에서 승인 체계를 적용했음을 유의해야합니다. 앱 수준에서 승인을 해제하고 실제로 각 페이지에 대한 액세스를 개별적으로 제한해야합니까? – TraxusIV

+1

@ TraxusIV 와우, 늦은 답변을 드려 죄송합니다. 내 생각에 이것은 당신의 꼭대기 버전에 묶여있을 것 같아요. 그리고 이후 버전의 꼭대기는 더이상 이것을해서는 안됩니다 (나는 믿습니다). 4.2 이상일 수도 있습니다. 그 외에는 직접 할당해야합니다. 걱정하지 마십시오. 유틸리티> 모든 페이지의 오른쪽 사이드 바에서 교차 페이지 유틸리티> 그리드 편집을 선택하여 비교적 쉽게 수행 할 수 있습니다. 모든 페이지에 대해 권한 부여 스키마를 쉽게 변경할 수 있습니다. 저장하는 것을 잊지 마십시오! :) – Tom

0

인증은 인증 된/식별 된 사람이 자원에 액세스하거나 작업을 수행 할 수 있는지 여부를 결정하는 프로세스입니다. 이는 사용자에게 할당 된 권한 또는 역할 세트를 기반으로합니다. 예를 들어, Oracle 데이터베이스에서 관리자는 작업을 예약 할 수있는 권한이 있지만 사용자는 할 수 없습니다. 인증이 인증과 다른 점은 무엇입니까? 종종 인증 및 권한 부여가 함께 작동합니다. 즉 인증은 인증을 따릅니다. 인증을 통해 귀하는 누구입니까? 승인 결정 귀하는 무엇을 할 수 있습니까?