【发布时间】:2019-03-28 20:54:32
【问题描述】:
我有一个自定义身份验证,我将根据 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