首页 > 解决方案 > 如何基于自定义身份验证隐藏页面

问题描述

我有一个自定义身份验证,我将根据 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;

标签: sqloracleoracle-apex

解决方案


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


推荐阅读