我有一个自定义身份验证,我将根据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;
在Oracle Apex中,您可以使用Page > Security > Authorization Scheme
限制页面访问。您可以在Shared Components > Authorization Schemes
中创建自定义函数返回布尔值作为自定义授权方案,并在所需页面中使用。希望它能帮到你。
正如对此similar question的响应中所讨论的类似,您将定义适合每种类型用户的页面,并使用授权方案保护这些页面及其链接。
您可以授权用户维护一组记录,以确定每个用户具有的访问类型,并相应地限制对该页面的访问。这样,DBA可以专注于保持硬转动(这是一个笑话)。
这不是身份验证问题。一旦你进入,这就是特权问题。
打个比方:我可以登录我的银行吗?当然。当我到达那里时我能做什么 - 只有客户可以做什么,只有他们的帐户。这分别是身份验证,权限和行级安全性。
我认为您可能最好通过身份验证来触发动态操作,然后隐藏雇主银行详细信息表。可能将身份验证设置值设置为隐藏项(雇主或员工),并根据项的值设置动态操作。为了更安全一点,将动态操作设置为if,true:显示表雇主银行详细信息,false:隐藏表雇主银行详细信息,并仅在加载时执行false操作。这应该是有希望的
编辑:该死的,我猜我还没读好这个问题。我以为你想要一页上的表格。所以没关系