You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle Apex:如何基于职责(Responsibility)限制网格数据范围

需求实现方案

需求背景

现有系统存在以下基础数据与需求:

  • 职责(权限角色)表Responsibilities,数据如下:
Resp_id | Name
--------|-------------------
1       | RESP_ACCOUNT_DEPT_1
2       | RESP_ACCOUNT_DEPT_2
3       | RESP_ACCOUNT_DEPT_3
  • 账户-职责关联表dept_account_resps,查询语句及对应数据:
SELECT dept_name, account_name, resps FROM dept_account_resps;

返回结果:

DEPT_NAME | ACCOUNT_NAME | RESPS
----------|--------------|-------------------
1         | ACC_DEP_1    | RESP_ACCOUNT_DEPT_1
2         | ACC_DEP_2    | RESP_ACCOUNT_DEPT_2
3         | ACC_DEP_3    | RESP_ACCOUNT_DEPT_1
4         | ACC_DEP_4    | RESP_ACCOUNT_DEPT_2

需开发新页面,根据当前登录用户(APP_USER)的职责展示对应权限的账户,例如用户拥有RESP_ACCOUNT_DEPT_1职责时,仅显示ACC_DEP_1、ACC_DEP_3。

实现步骤

1. 获取当前用户的职责列表

从系统的用户-职责关联表(假设表名为user_responsibilities,字段包含user_id、resp_name)中,查询当前登录用户的所有职责。示例SQL:

SELECT resp_name FROM user_responsibilities
WHERE user_id = '当前登录用户ID';

后端可通过会话获取用户ID后执行该查询,得到用户的职责集合。

2. 关联筛选有权限的账户

用用户的职责列表作为条件,关联dept_account_resps表筛选出对应账户。示例SQL:

SELECT DISTINCT account_name 
FROM dept_account_resps
WHERE resps IN (
    -- 此处代入步骤1获取的用户职责列表,例如'RESP_ACCOUNT_DEPT_1'
);

注意使用预编译语句传递职责参数,避免SQL注入风险。

3. 页面渲染与权限控制

  • 后端将筛选后的账户列表传递给前端页面,前端仅渲染该列表内的账户数据。
  • 核心权限控制必须在后端完成,禁止仅依赖前端隐藏内容(防止用户通过接口直接获取无权限数据)。

4. 关键注意事项

  • 避免硬编码职责名称,尽量通过数据库或配置动态获取,方便后续权限扩展。
  • 所有数据查询必须经过职责过滤,确保无权限数据不会被返回。

内容的提问来源于stack exchange,提问作者Velocity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 21:12:44