Oracle apex VPD和上下文与Application Express

Oracle apex VPD和上下文与Application Express,oracle-apex,Oracle Apex,我将使用application Express和Oracle Database Enterprise构建应用程序,使用上下文在模式上实现VPD, 对于开发者问题,我在登录触发器上设置为设置用户 但我不能查看应用程序内部的数据,但我可以使用SQL语句查看它 那么,当使用VPD、上下文或登录触发器时,Apex中是否存在问题?可能与执行登录触发器时的有关 通常,web应用程序(包括Apex)不会为每个连接到该应用程序的用户提供数据库会话。相反,它将有一个数据库会话池(可能是10个),并在最终用户发出数

我将使用application Express和Oracle Database Enterprise构建应用程序,使用上下文在模式上实现VPD, 对于开发者问题,我在登录触发器上设置为设置用户

但我不能查看应用程序内部的数据,但我可以使用SQL语句查看它


那么,当使用VPD、上下文或登录触发器时,Apex中是否存在问题?

可能与执行登录触发器时的有关

通常,web应用程序(包括Apex)不会为每个连接到该应用程序的用户提供数据库会话。相反,它将有一个数据库会话池(可能是10个),并在最终用户发出数据库请求时使用其中任何一个会话

用于登录的数据库用户以及可能使用的会话数都应该是可配置的,具体取决于您如何实现Apex(嵌入式PL/SQL网关、Apex侦听器或Oracle HTTP服务器)


简而言之,登录触发器可能是设置上下文变量的错误位置。

在Apex中,正确的方法是使用应用程序安全设置的VPD属性:

Shared Components > Edit Security Attributes > Security
有一个标题为“虚拟私有数据库PL/SQL调用以设置安全上下文”(或类似的内容)的部分,将代码放在那里设置VPD上下文。它由Apex引擎为每个页面视图执行