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

问题描述 投票:1回答:3

我有一个自定义身份验证,我将根据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;
sql oracle oracle-apex
3个回答
1
投票

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


0
投票

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

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

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

打个比方:我可以登录我的银行吗?当然。当我到达那里时我能做什么 - 只有客户可以做什么,只有他们的帐户。这分别是身份验证,权限和行级安全性。


-1
投票

我认为您可能最好通过身份验证来触发动态操作,然后隐藏雇主银行详细信息表。可能将身份验证设置值设置为隐藏项(雇主或员工),并根据项的值设置动态操作。为了更安全一点,将动态操作设置为if,true:显示表雇主银行详细信息,false:隐藏表雇主银行详细信息,并仅在加载时执行false操作。这应该是有希望的

编辑:该死的,我猜我还没读好这个问题。我以为你想要一页上的表格。所以没关系

© www.soinside.com 2019 - 2024. All rights reserved.