经过一年多的设计编码和测试,公司通用权限系统对业务部门提供了比较稳定、便捷和灵活的支撑。
该系统分为两部分:配置界面和WCF服务。
界面:权限系统管理员可以通过配置界面的方式对各部门或者组织机构的人员进行业务权限分配操作。
WCF服务:业务开发人员可以通过权限系统提供的接口服务,获取业务权限数据,对业务系统进行开发。
该设计的好处就是权限系统的可移植性更高,权限系统可以单独部署,发布对外的服务接口即可,和业务系统之间耦合性更低,从而达到设计模式的核心价值高内聚,低耦合。
IIS部署示例如下:
权限系统开发环境:
开发工具:Microsoft Visual Studio 2012(2010)中文旗舰版
数据库: Sql server2008\2012(Oracle)
框架:Spring.net+NHibernate+MVC
系统功能:
1、 组织机构:用户维护页面主要用来对系统组织结构进行管理。进入页面后左侧树桩菜单显示已有组织机构以及层级结构,点击某级节点的组织机构名称。右侧显示组织机构的详细信息,以及该组织机构下的所属用户。如图:
2、 用户维护:用户维护页面主要用来对系统用户进行管理。进入页面后按登录用户的权限显示全部可见用户,分页显示。同时可按照组织机构、真实姓名、登录名三种条件进行模糊筛选。
用户授权:对所选用户进行角色授权,一个用户可以选择多个角色进行授权,如图:
3、应用维护:应用维护页面主要用来对系统子应用(系统或者应用)的相关信息进行管理。
进入页面后按登录用户的权限显示全部可见应用,分页显示,以表格形式展示。
4、角色维护:角色维护页面主要用来对系统角色进行管理。进入页面后按登录用户的权限显示全部可见角色,分页显示。同时可按照所属应用、角色编码两种条件进行模糊筛选。(角色与应用为多对一关系,每个角色只能属于一个应用)
页面授权:对某个角色进行页面授权控制,勾选上的页面菜单为该角色授权菜单,如图:
数据授权:对系统原子数据进行管理和授权操作,如图:
5、用户授权:用户授权,是用来将以赋予权限的一些系列角色,授予某个用户。使该用户具有这些权限。页面分为左边用户区,和右边归属角色区。
用户可通过页签切换,实现按组织机构进行过滤筛选后选择具体用户,也可实现为某个组织机构下所有用户授予某些角色的功能
6、页面维护: 页面维护主要用来对每个应用下的子页面以及页面间的层级关系进行管理。对子系统的菜单和页面进行管理和赋值页面地址,用户根据角色授权管理页面是否可见或者访问其地址。
7、页面资源维护:用户资源维护主要用来对每个页面内的页面资源以及资源间的层级关系进行管理。(页面上的每一个控件都称为一个资源)后台用户可以根据该页面上的资源对其进一步管理,比如页面可以对某个用户在该页面上只可以查询不可以更改的管理。
8、权限查询:用来查询具体某个用户下,某个角色的,对应类型的权限
WCF服务接口:
- 用户登录验证接口
形式:
UpUsersComm LoginVerify(string userId, string passWord);
描述:
用户进行登录验证。
传入参数:
UserId:用户登陆ID。
PassWord:登录密码。
返回值:
UpUsersComm自定义类型,存有用户信息
- 获取应用权限信息
形式:
UpUsersComm GetSystemPermission (string userId);
描述:
根据当前用户ID,获取用户所具有的访问业务系统模块的权限。
传入参数:
UserId:用户Id。字符串类型。
返回值:
UpUsersComm,存有用户所能访问的系统应用模块集合。
- 获取可访问页面的权限
形式:
UpUsersComm GetPagePermission(string userId, long systemIdentifierId)
描述:
根据当前用户Id,获取用户所能访问具体哪些页面,返回页面表的映射对象,并带有级联关系,业务模块能自行形成树状结构。
传入参数:
UserId:用户名。字符串类型。
SystemIdentifierid:系统表示Id。字符串类型。
返回值:
UpUsersComm,存有用户所能访问的页面对象的集合。
- 获取可访问页面的权限
形式:
UpUsersComm GetPagePermission(string userId, string systemIdentifierName)
描述:
根据当前用户Id,获取用户所能访问具体哪些页面,返回页面表的映射对象,并带有级联关系,业务模块能自行形成树状结构。
传入参数:
UserId:用户名。字符串类型。
systemIdentifierName:应用系统名称。字符串类型。
返回值:
UpUsersComm,存有用户所能访问的页面对象的集合。
- 获取可访问页面资源的权限
形式:
UpUsersComm GetPageSourcePermission(string userId, string systemIdentifierName, string pageName);
描述:
根据当前用户Id、应用系统名称和页面名称,获取用户所能访问具体页面的资源,返回页面资源集合。
传入参数:
UserId:用户名。字符串类型。
systemIdentifierName:应用系统名称。字符串类型。
pageName:页面名称
返回值:
UpUsersComm,存有用户所能访问的页面资源对象的集合。
- 获取可访问页面资源的权限
形式:
UpUsersComm GetPageSourcePermission(string userId, long pageId);
描述:
根据当前用户Id和页面ID,获取用户所能访问具体页面的资源,返回页面资源集合。
传入参数:
UserId:用户名。字符串类型。
pageId: 页面ID。字符串类型。
返回值:
UpUsersComm,存有用户所能访问的页面资源对象的集合。
- 获取原始数据的权限
形式:
UpUsersComm GeDataPermission(string userId, string systemIdentifierName, string dataCategoryName)
描述:
根据当前用户Id、应用系统名称和数据类别名称,获取用户所能访问原始数据资源,返回原始数据集合。
传入参数:
UserId:用户名。字符串类型。
systemIdentifierName:应用系统名称。字符串类型。
dataCategoryName:原始数据类别名称。字符串类型。
返回值:
UpUsersComm,存有用户所能访问的原始数据集合。
- 获取原始数据的权限
形式:
UpUsersComm GeDataPermission(string userId, long dataCategoryId)
描述:
根据当前用户Id和数据类别ID,获取用户所能访问原始数据资源,返回原始数据集合。
传入参数:
UserId:用户名。字符串类型。
dataCategoryId:数据类别ID。长整型。
返回值:
UpUsersComm,存有用户所能访问的原始数据集合。
- 获取原始数据的权限
形式:
UpUsersComm GetDeniedDataPermission(string userId, string systemIdentifierName, string dataCategoryName)
描述:
根据当前用户Id、应用系统名称和原始数据名称,获取用户所能访问原始数据类型为1资源,返回原始数据集合。
传入参数:
UserId:用户名。字符串类型。
systemIdentifierName:应用系统名称。字符串类型。
dataCategoryName:数据类别名称。字符串类型。
返回值:
UpUsersComm,存有用户所能访问的原始数据类型为1的数据集合。
- 分页获取原始数据的权限
形式:
UpUsersComm GeDataPermissionByPage(string userId, string systemIdentifierName, string dataCategoryName,int pageSize, int pageIndex)
描述:
根据当前用户Id、应用系统名称和原始数据名称,分页获取用户所能访问原始数据,返回当页原始数据集合。
传入参数:
UserId:用户名。字符串类型。
systemIdentifierName:应用系统名称。字符串类型。
dataCategoryName:数据类别名称。字符串类型。
pageSize:页面行数。整型。
pageIndex:页面索引。整型。
返回值:
UpUsersComm,存有用户所能访问的原始数据集合。
- 根据菜单名称获取角色集合
形式:
UpUsersComm GetRolesByMenu(string menuName)
描述:
根据菜单名称,获取角色,返回角色集合。
传入参数:
menuName:菜单名称。字符串类型。
返回值:
UpUsersComm,存有角色集合。
- 根据用户ID获取角色集合
形式:
IList<UpRoleComm> GetRoleWhitUserID(string userId)
描述:
根据用户ID,获取角色,返回角色集合。
传入参数:
userId:用户ID。字符串类型。
返回值:
IList<UpRoleComm>,存有用户所能访问的角色集合。
- 根据用户ID获取用户信息
形式:
IList<UpRoleComm> GetRoleWhitUserID(string userId)
描述:
根据用户ID,获取用户信息,返回用户对象。
传入参数:
userId:用户ID。字符串类型。
返回值:
UpUsersComm,存有用户所能访问的用户信息。
- 创建用户
形式:
void CreateUser(UpMQUserComm user);
描述:
创建用户。
传入参数:
UpMQUserComm:用户对象。
返回值:无
- 修改用户
形式:
void UpdateUserInfo (UpUsers user);
描述:
修改用户信息。
传入参数:
UpUsers:用户对象。
返回值:无
- 修改用户
形式:
void DeleteUser(string userId)
描述:
根据用户ID,删除用户信息。
传入参数:
userId:用户ID。
返回值:无
- 判断是否为超级管理员
形式:
bool IsCaptain(string userId)
描述:
根据用户ID,判断该用户是否有超级管理员。
传入参数:
userId:用户ID。
返回值:TRUE/False
- 根据数据类型名称获得数据类型ID
形式:
long GetDatatypeIDByName(string name)
描述:
根据数据类型名称,获取数据类型的名称。
传入参数:
name:数据类型名称。
返回值:int
- 根据ID获取角色信息
形式:
UpRoleComm GetRoleById(long id)
描述:
根据ID获取角色信息。
传入参数:
id:角色ID。
返回值:
UpRoleComm,角色信息。
- 根据用户ID获取角色信息
形式:
ArrayList GetRoleByUserId(string userId)
描述:
根据用户ID,获取角色集合。
传入参数:
userId:用户ID。
返回值:
ArrayList,角色信息集合。
- 修改密码
形式:
int UpdatePassword(string userId,string pwd,string oldPwd)
描述:
修改用户密码,成功返回1,否则返回0。
传入参数:
userId:用户ID。
Pwd: 新密码。
oldPwd:旧密码
返回值:1/0
大概功能,先整理到这,有兴趣的qq:187386033。