您的位置:首页 > 其它

一个OA系统的权限设计

2008-02-27 15:05 393 查看
最近研究一个OA系统的代码,来说说它权限设计的这部分吧。

数据库中与之相关的包含九个表,Action(动作表),Department(部门表),Employee(职工表),Function(模块表),Role(角色表),Purview(权限表),此外还有EmpDep(确定职工与部门的联系),FuncAct(确定模块与操作的联系),EmpRole(职工与角色的联系)。

简单来说就是每个职工(Employee)有相应的工作部门(Department)以及角色(Role),而每一个模块也有相应的操作(Action)。下面来看看Purview表的结构:
Gu_ID

主键

Role_ID

外键(role)

Func_ID

外键(Function)

Act_ID

外键(Action)

因此,一个职工在某一模块有没有操作权限只要看他在purview表中存不存在Role_ID,Func_ID,Act_ID与这个职工的一样即可。

存储过程如下:

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go
ALTER procedure [dbo].[CheckPurview]

@Role_ID bigint,

@Func_Name nvarchar(50),

@Act_Name nvarchar(50),

@Succeed bit output

as

if exists(select * from purview

where role_id=@Role_ID

and func_id in(select func_id from [function] where func_name=@Func_Name)

and act_id in(select act_id from [Action] where act_name=@Act_Name)

)

begin

set @Succeed=1

end

else

begin

set @Succeed=0

end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: