设计要求:
通过一次代码设计,无论在整个应用的任何地方或通过何种形式调用此功能,都能被功能权限所限制,要求限制级别到达模块下文档权限。
权限划分主要从权限对象来看,大的方向上的是
系统模块权限:模块的所有管理权
文档权限:浏览、增加,修改、删除
权限管理数据结构设计:
方案一
功能(模块)表:
数据元素——功能编号 (funid);功能名称(funname);功能说明(funintro)
角色(分组)表:
数据元素——角色编号(roleid);角色名称(rolename);角色说明(roleintro)
角色功能表:
数据元素——角色编号(roleid);功能编号(funid)
用户信息表: 
数据元素——用户编号(userid);用户名称(username)
用户角色表:
数据元素——用户编号(userid);角色编号(roleid)功能(模块)表:主要存储系统用户的操作功能。
角色(分组)表:存储系统使用人员扮演的角色和职位。
角色功能表:某个角色在系统中所具有的系统操作功能。
用户信息表:存储系统使用用户的信息
用户角色表:用户在使用系统时,所扮演的角色。
每个角色对应具体的功能,至少具有基本权限;每个用户至少拥有一个角色;这样很方便管理用户的权限功能。设置一个系统管理员用户,具有所有的权限,授权用户只有系统管理员,可以对用户的进行管理和用户权限的管理,对用户的权限判断,读取用户角色表取得用户的角色数据,通过角色功能表获得用户所扮演的角色所具有的系统功能。
系统由系统管理员进入进行功能的维护(添加、修改、删除),角色的维护(添加、修改、删除),用户的维护(添加、修改、删除),角色权限的维护(添加、修改、删除)、用户角色的维护(添加、修改、删除)。
以上的方案通过对角色的权限设定,确定用户在所扮演角色下所具有的系统功能,在判断用户功能的时候需要对数据库多次进行操作,查询出用户所有对应的权限。