Oracle apex Oracle Apex在同一页上具有多个授权

Oracle apex Oracle Apex在同一页上具有多个授权,oracle-apex,Oracle Apex,我有一个关于授权的要求,若用户是管理员/编辑,那个么用户可以读/写页面。 如果用户是访问者,他只能阅读同一页 我创建的授权方案是\u ADMIN,其中存在sql查询: select 1 from users where role_id in(select role_id from roles where name ='Admin') 现在我在第页应用了这个授权方案 在只读模式下,我选择了函数体、plsql和write: If apex_authorized.is_authorized ('I

我有一个关于授权的要求,若用户是管理员/编辑,那个么用户可以读/写页面。 如果用户是访问者,他只能阅读同一页

我创建的授权方案是\u ADMIN,其中存在sql查询:

 select 1 from users where role_id in(select role_id from roles where name ='Admin')
现在我在第页应用了这个授权方案

在只读模式下,我选择了函数体、plsql和write:

If apex_authorized.is_authorized ('IS_ADMIN')
RETURN FALSE
ELSE RETURN TRUE;
END IF;
我应用这个假设,这将使页面只读的用户不是管理员。 但由于我设置的授权方案和错误消息,当我使用访问者角色登录时,我只会收到错误。与我为授权方案给出的错误消息相同

在这种情况下,应用多重授权方案的最佳方式是什么


Apex:20.2

听起来您希望授权方案是
是\u ADMIN\u或\u VISTOR
,如果用户是管理员或访问者,则返回
true
。允许管理员和访问者访问该页面。您的只读逻辑将意味着访问者将看到只读页面,管理员将看到可编辑页面。

解决此问题的一种方法是创建基于角色和职责的安全模型(如ERP系统中所做的那样)。将角色授予用户(如管理员、访问者等),并将责任链接到应用程序功能(如查看EMP、编辑EMP)。然后将责任授予角色或其他责任。根据职责创建授权方案(应用程序不知道角色)

EMP表单示例:要求访问者可以查看数据,管理员可以编辑数据

创建职责:查看\u EMP并编辑\u EMP和匹配的授权方案。 角色访问者具有责任视图\u EMP.
责任编辑\u EMP具有责任视图\u EMP(因此,编辑\u EMP的人将自动获得视图\u EMP)。
角色管理员负责编辑EMP

在表单中,您将页面的验证方案设置为查看\u EMP,将创建/保存/删除按钮的验证方案和DML页面进程设置为编辑\u EMP


因此,当一个有访问者的用户来到表单时,他会得到数据,但按钮是隐藏的。当管理员出现在屏幕上时,他会看到所有用户。

Ok,因此授权方案将包含所有用户。那么,我应该如何编写只读逻辑呢?如果我将授权方案用作:(Admin,User)中的角色,并且用户使用相同的只读逻辑,那么它将使所有用户的页面都是只读的users@Vini-如果用户是访问者,
apex\u authorized.is\u authorized('is\u ADMIN')
返回什么?我希望返回
false
,这样只读语句将返回
true
。但是,如果它返回
true
,则会导致页面对用户可编辑。是的,您是对的,但当我这样做时,它会使页面对管理员和用户都是只读的。只读逻辑需要写为函数代码/pl sql,或者还有其他定义方法?好的,我认为这是一个与会话相关的问题。当我登录新的新会话时,它正在工作。可能与缓存有关。谢谢