如何基于自定义身份验证隐藏页面

时间:2019-03-28 12:01:51

标签: sql oracle oracle-apex

我有一个自定义身份验证,我将基于2个表(雇员表和雇主表)将其放在下面的代码部分中。雇主登录后,他们可以查看其银行详细信息以及所有雇员报告的列表。当员工登录时,我希望隐藏雇主银行详细信息页面,并且也要隐藏所有员工页面的列表,而我希望显示员工详细信息页面。我不知道该怎么做。香港专业教育学院发现的最接近的东西是自定义授权方案,但这需要数据库管理员必须手动授予用户权限。

主要说明)我作为数据库管理员,不需要手动将权限授予某些用户。雇主和雇员将创建自己的帐户,并根据他们是雇主还是雇员(身份验证方案应执行的身份)显示适当的页面。 (因此,是的,雇员在开户时可能会谎称自己是雇主,但无视此事)

另一注)请忽略密码以纯文本存储的事实,这是一个家庭作业问题,尚未教授加密。

function authenticate( p_username varchar2, p_password varchar2 ) return boolean is  
begin  
  return(  
     Table1Authenticate( p_username, p_password )  
     or  
     Table2Authenticate( p_username, p_password )  
   );  
end; 


create or replace function Table1Authenticate( p_username varchar2, p_password varchar2 ) return boolean is  
   i integer;  
begin  
   select  
      1 into i  
  from employer  
  where upper(employer.username) = upper(p_username)  
  and   upper(employer.passwords) = upper(p_password);  
  return( true );  
exception when NO_DATA_FOUND then  
  return( false );  
end;

create or replace function Table2Authenticate( p_username varchar2, p_password varchar2 ) return boolean is  
   i integer;  
begin  
   select  
      1 into i  
  from employee
  where upper(employee.username) = upper(p_username)  
  and   upper(employee.password) = upper(p_password);  
  return( true );  
exception when NO_DATA_FOUND then  
  return( false );  
end;

3 个答案:

答案 0 :(得分:1)

在Oracle Apex中,您可以使用Page > Security > Authorization Scheme来限制页面访问。您可以在Shared Components > Authorization Schemes中创建返回布尔值作为自定义授权方案的自定义函数,并在所需页面中使用。希望对您有帮助。

答案 1 :(得分:0)

类似于对此similar question的答复中所讨论的,您将定义适合每种类型用户的页面,并使用授权方案保护这些页面及其链接。

您可以授权用户维护一组记录,这些记录确定每个用户具有的访问类型,并相应地限制对该页面的访问。这样,DBA可以专注于保持艰难的自旋(这是个笑话)。

这不是不是身份验证问题。一旦进入,这就是特权的问题。

Analogy:我可以登录银行吗?当然。当我到达那里时,我该怎么办-只有任何客户,只有他们的帐户,才能做什么。分别是身份验证,特权和行级安全性。

答案 2 :(得分:-1)

我认为,最好通过执行正在执行的身份验证来触发动态操作,然后隐藏雇主银行详细信息表,从而为您提供最佳服务。 可能将身份验证设置的值设置为隐藏的项目(员工或雇员),然后根据该项目的值设置动态操作。 为了更加安全起见,请将动态操作设置为if雇主,true:显示表雇主银行详细信息,false:隐藏表雇主银行详细信息,并仅在加载时执行false操作。 希望它可以工作

编辑:该死,我猜我对问题的理解不够。我以为您想要一页上的表格。没关系