暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 以当前用户身份执行pl/sql

ASKTOM 2020-08-28
475

问题描述

你好,
我正在将现有的web应用程序迁移到APEX。由于某些原因,我必须坚持对本地数据库中的帐户进行用户身份验证。到目前为止,东西工作得很好,但我正在寻找一种方法来运行select语句并作为当前用户执行pl/sql块-通过他的数据库帐户对自己进行身份验证的人。
我们在很大程度上使用了pl/sql包,并在这些包中使用了基于应用程序的权限检查。由于我们不想失去此功能,因此我不想将所有特权授予标准APEX用户。

我不得不承认,我对APEX还很新,还在学习。
期待您的回复。

问候,
安德烈亚斯

专家解答

您可以查看使用APEX_UTIL.SET_PARSING_SCHEMA_FOR_REQUEST强制解析模式到登录用户...在Security-Security属性中,设置初始化代码以使用设置的解析架构 (为所有页面设置) apex_util.set_parsing_schema_for_request (p_schema => :APP_USER);

这将在每个页面加载时运行,因此可能会影响某些性能-请确保您仔细测试。

请记住,应用程序 * 默认 * 解析架构仍然必须是具有应用程序所需的所有特权的用户。当开发人员输入SQL或PL/SQL来解析是否有效时,您将在构建器 (页面设计器) 中的开发过程中使用默认的解析架构,...当开发人员运行应用程序时,我们将使用他在应用程序登录期间指定的数据库用户。此外,需要将所有特权应用程序用户 (数据库用户) 作为有效模式分配给工作区,否则上述过程将阻止切换到该数据库用户。客户可以使用APEX_INSTANCE_ADMIN.ADD_SCHEMA将它们添加到脚本中。显然,这也必须在生产系统上完成。

请注意,如果您有引用函数 “用户” 的代码,它仍然不是应用程序用户。他们将获得APEX_PUBLIC_USER或应用程序的默认解析用户。他们将不得不使用

SYS_CONTEXT('APEX $ SESSION','app_user')

来获取经过身份验证的用户的名称。

感谢APEX团队的迈克尔·波特/帕特里克·沃尔夫提供的信息。

文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论