sql - 如何基于自定义身份验证隐藏页面
问题描述
我有一个自定义身份验证,我将根据 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
您可以在所需的页面中创建自定义函数返回布尔值作为自定义授权方案。希望它可以帮助你。
推荐阅读
- vue.js - 如何在不重置分页的情况下刷新 b-table 组件?
- html - 有没有办法在 Nginx 中显示 HTML 代码而不是执行它?
- mysql - 在 Laravel 6 中搜索
- java - 在paintComponent中使用for循环是否安全?
- javascript - 如何正确使用 d3.js 拖动?
- react-native - React Native 中的二维码扫描器和 Webview
- json - jq:从平面键创建 JSON 对象
- r - R while:仅改变 data.frame 中不匹配条件的组
- swift - SwiftUI View 协议中的 EnvironmentObject
- c++ - OpenGL绘制多个对象的正确方法?