一个OA系统的权限设计

    最近研究一个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



   
posted on 2008-02-27 15:05  prayforsmile  阅读(2017)  评论(3编辑  收藏  举报