在我们的 j2ee 应用程序中,我们使用安全应用程序角色。基本上,数据源使用应用程序用户模式连接到数据库。应用用户只有创建会话权限。数据库登录触发器会将一组属性复制到本地安全上下文。(IP 地址、会话用户、客户端 ID、应用程序名称)。应用程序在执行任何 DML 之前显式调用存储过程 sec_mgr.set_role。
sec_mgr.set_role 将检查本地上下文属性,授权 ip、应用程序名称,并根据会话用户为该会话设置赞赏角色。
我们希望将相同的框架应用于 APEX 应用程序。首先,我们将配对模式更改为只有创建会话权限的应用模式。然后我们将调用 sec_mgr.set_role 的 plsql 代码放入应用程序构建器 --> 共享组件 ---> 编辑安全属性 ---> 虚拟专用数据库 (VPD)。
但是,我们得到了错误 ORA-06565: cannot execute SET ROLE from inside stored procedure
sec_mgr.set_role 被定义为调用者的权限(AUTHID CURRENT_USER)
我是否在 APEX 中遗漏了一些东西以使其正常工作?
谢谢