甚至用户也可以访问需要限制的APEX页面



我创建了一个4页的应用程序

回家
  • Admin页面
  • 计算体重指数

然后是-> shared components -> Select Authorization schema -> Create

我给它设置了一个名字only_admin -> PLSQL boolen expression return (option)

下面是我的代码
DECLARE
myrole VARCHAR2(10 CHAR);
BEGIN
SELECT role_assigned
INTO   myrole
FROM   employee
WHERE  id = :APP_USER;

IF :myrole = 'ADMIN' THEN
RETURN TRUE;
ELSE
RETURN false;
END;

保存以上代码后,我进入Admin page -> under security -> selected -> only_admin

现在发生的是,甚至用户也可以看到页面。这是不应该发生的

**下面是我的表格:Employee **

NAME,AGE,ID,ROLE_ASSIGNED
Raj,22,12,ADMIN 
Deep,24,14,USER
Bob,26,16,USER

我想限制Name: Deep和Bob访问Admin页面,因为他们是USER -> ROLE_ASSIGNED

不是

IF :myrole = 'ADMIN' THEN

,

IF myrole = 'ADMIN' THEN

myrole前面没有分号。它不是一个页面条目或类似的东西;它只是一个局部变量。

只是为了完整性是另一种选择,既简单又容易出错。作为授权方案代码,不要使用返回布尔值的"pl/sql函数,而是使用"sql exists"使用以下sql选项:

SELECT  1 
FROM  employee
WHERE  id = :APP_USER 
AND  myrole = 'ADMIN' 

优势:

  • 如果user在employee表中没有行,则不会引发异常。
  • 如果安全模型允许员工拥有多行,则不需要更改源。

最新更新