百度空间 | 百度首页 
 
查看文章
 
一个OA系统的权限设计
2008/08/24 下午 10:07
    最近研究一个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


类别:oa项目设计 | | 添加到搜藏 | 分享到i贴吧 | 浏览() | 评论 (2)
 
最近读者:
 
网友评论:
1
2008/08/25 下午 02:21 | 回复
 
2
2008/10/22 下午 04:46 | 回复
dfsa
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2010 Baidu