数据库应用系统权限控制-(行锁/按钮锁on java,php,aspx)
--------------------------------
function:数据库应用系统权限控制
file :system_authority_plan.txt
author :chinayaosir QQ:44633197
Tools :Authentication and Authorization on enterprise system
date :6/01/2011
blog :http://blog.csdn.net/chinayaosir
note :禁止其它网站转载此文章
-----------------
detail list
用户密码检查锁
系统菜单权限过滤锁
管理员分配给用户的权限锁
系统工作流程中的行锁,按钮锁
--------------------------------
index.jsp/index.php/index.aspx
用户密码验证锁
用户密码验证锁函数
返回值设定:pass代表通过,fail代表密码不对
1.调用事件(登陆按钮调用)
2.dao函数String getloginlock(String u,String p);
3.DB函数f_getloginlock(u varchar2,p varchar2) return varchar2
password需要使用md5进行加解密
--------------------------------
menu.jsp/menu.php.menu.aspx
菜单检查锁
菜单锁函数
返回值设定:可用菜单对象列表
0.调用事件(网页加载完成后调用)
1.DAO函数list<T> f_getmenulist(String u);
--------------------------------
xxxxx.jsp/xxx.php/xxx.aspx
用户默认按钮锁
用戶按钮权限审核函数
返回值设定:4位权限控制符号XXXX=RWDP(1000=R---,1001=R--P,1101=RW-P,1111=RWDP)
0.调用事件(网页加载完成后调用)
1.dao函数String getuserrwdplock(String u,String m)
2.DB函数f_getuserrwdplock(u varchar2,m varchar2) return varchar2
实现方法=action+jndi+ejb+database function
it can used on java,php,.net
--------------------------------
作业流程行锁
查询数据时算出每行的权限(产品编号,订单号,采购单号,发票号)
工作流程的行锁函数加入到XXXXXXX视图的rowlock,网页界面按rowlock值做锁规则(修改/刪除限制)!
0.调用事件(查询视图)返回值设定:R,W(R=只读,M=修改)
//order item行锁定(R/M)? by item
1.v_itembasic.rowlock
2.DB函数f_getrowlock_item(item) return varchar2
1.v_oc_detail.rowlock
2.DB函数f_getrowlock_oc(oc,item,shdt) return varchar2
1.v_oa_detail.rowlock
2.DB函数f_getrowlock_oa(oc,item,shdt,fty)return varchar2
1.v_lp_detail.rowlock
2.DB函数f_getrowlock_lp(oc,item,shdt,fty,lp,ctns) return varchar2
1.v_iv_detail.rowlock
2.DB函数f_getrowlock_iv(oc,item,shdt,fty,lp,inv) return varchar2
--sample code see below
create or replace function f_getrowlock_oc(oc varchar2,item varchar2,sd date)
return varchar2
is
findrow number(18,0);
returnv varchar2(1);
begin
findrow:=0;
returnv:='';
select count(*) into findrow
from oa_factory
where oc_number=oc and itemnumber=item and shipp_date=sd;
if (findrow>=1) then
returnv:='R';
else
returnv:='M';
end if;
return returnv;
end ;
//行锁函数f_getrowlock_oc应用到视图v_oc_detail代码
create or replace view v_oc_detail(
oc_number,
itemnumber,
shipdate,
ordercqty,
rowlock)
AS
SELECT
d.oc_number,
d.itemnumber,
d.shipp_date,
d.ordercqty,
f_getrowlock_oc(d.oc_number,d.itemnumber,d.shipp_date)
from oc_detail d;
--------------------------------
作业流程的按钮锁
查询数据时算出页面按钮(save,delete,print)权限(产品编号,订单号,采购单号,发票号)
工作流程的按钮锁函数(数据查询完毕之后调用它)返回值设定:(WD,W-,--,-D)W=保存,D=删除
0.调用事件(网页数据装载时调用Action call ejb)
//itembasic(save和delete按钮锁可用)
1.DAO函数String getbtnlock_item(item)
2.DB函数f_getbtnlock_item(item varchar2) return varchar2
//order confirm(save和delete按钮锁可用?)
1.DAO函数String getbtnlock_oc(oc)
2.DB函数f_getbtnlock_oc(oc varchar2) return varchar2
//oa(save和delete按钮锁可用?)
1.DAO函数String getbtnlock_oa(oc)
2.DB函数f_getbtnlock_oa(oc varchar2) return varchar2
//lp(save和delete按钮锁可用?)
1.DAO函数String getbtnlock_lp(lp)
2.DB函数f_getbtnlock_lp(lp varchar2) return varchar2
//iv(save和delete按钮锁可用?)
1.DAO函