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