转载自 http://blog.csdn.net/dyllove98/article/details/9414113
一、前言
之前的博客一直都还没写到框架的实现及权限系统,今天开始写我的权限系统,我以前做过的项目基本上都有权限管理这个模块,但各个系统都会有一些不太一样,有些简单点,有些稍微复杂一点,一句话,我们做的系统都离不开这个权限系统。所以网上很多人尝试做一个通用的权限系统,不评论他们做的怎么样,只是说在网上能找到的直接能用的应该不多,适用的并且能集成到项目中的就更少了,所以还是考虑自己做一个,不一定很通用,但足够自己用的权限系统。
关于权限系统的文章网上多如牛毛,很多都是基于角色的访问控制(RBAC)设计。但是发现完全实现RBAC的理论其实不一定好用,我想做一款适合自己的。所以首先我们必要明确我们要去实现哪些东西。
1、权限资源
a.菜单权限 经理和业务员登陆系统拥有的功能菜单是不一样的
b.按钮权限 经理能够审批,而业务员不可以
c.数据权限 A业务员看不到B业务员的单据
d.字段权限 某些人查询客户信息时看不到客户的手机号或其它字段
2、用户,应用系统的具体操作者,我这里设计用户是不能直接分配权限的,必须要分配一个角色,角色中再分配权限,如果某个用户权限比较特殊,可以为他专门建一个角色来应用解决,因为如果用户也可以分配权限系统就会复杂很多。
3、角色,为了对许多拥有相似权限的用户进行分类管理,定义了角色的概念,以上所有的权限资源都可以分配给角色,角色和用户N:N的关系。
4、机构,树形的公司部门结构,国内公司用的比较多,它实际上就是一个用户组,机构和角色N:N的关系,机构和用户也设计成N:N的关系,也就是说有时候一个用户可以从属于两个部门,这种情况在我们客户需求中的确都出现过。
当然除了上面提到的主要对象还包括以下对象
5、菜单
6、按钮
7、授权代码以前我做的项目中控制数据权限有以下两种:
a.用部门编码来控制,只能查询到自己所属部门的数据
b.用项目编码来控制,只能查询到自己所属项目的数据。
这样就有一个问题,我到底要用什么字段来控制数据权限呢,所以我们就设计了一个授权代码,如果你是用机构来控制数据权限,那么你可以把授权代码建成跟机构一样的树,如果用项目编码控制,可以把它建成项目树,用其它字段控制都一样,所以会比较灵活,也把机构或项目解放出来了。
8、数据字典
9、系统参数
10、日志查询登陆日志、操作日志(xx人xx时间对xx对象做了xx操作 自定义的)、系统日志(系统运行错误记录等 log4net输出的)
1、表结构设计
![](https://img.haomeiwen.com/i1428538/4c6f272250fbf734.png)
2 程序设计
我还是采用mvc4.0 + web api + easyui + knockout去实现。实际上之前我就实现的差不多,最近也一直在花时间更新完善。
这个权限系统太大了,这一篇肯定是说不完的,我这里就先总体上说了一下设计思路,接下每一篇写具体实现,一篇一个功能,大家期待我的下一篇吧。
3、UI设计
不多说了,先上图吧,我在第一篇博客中贴过以前的版本,最近也有一些更新,再贴一次吧,这次截图比较详细点,也配了一些文字的说明介绍。
功能1:菜单导航
【菜单导航】1:包括新增修改删除功能,直接在grid中编辑
![](https://img.haomeiwen.com/i1428538/eb07466792e01a72.png)
【菜单导航】2:选择图标
![](https://img.haomeiwen.com/i1428538/75536b7bc8093a86.png)
![](https://img.haomeiwen.com/i1428538/68683fac3ac23f7b.png)
【菜单导航】4:管理按钮库 增删改
![](https://img.haomeiwen.com/i1428538/45f448edd8e39998.png)
功能2:组织结构【组织结构】1:图形化的树结构,可以新增编辑删除节点
![](https://img.haomeiwen.com/i1428538/57884204c05ab2fb.png)
【组织结构】2:编辑节点
![](https://img.haomeiwen.com/i1428538/1aa52a5afbfbd058.png)
【组织结构】3:设置角色
![](https://img.haomeiwen.com/i1428538/2cf54ae429f98051.png)
功能3:授权代码
【授权代码】树形grid 可以增添编辑删除
![](https://img.haomeiwen.com/i1428538/1f5d61f5441ab0a0.png)
功能4:角色管理【角色管理】1:直接在grid中 增添编辑删除
![](https://img.haomeiwen.com/i1428538/f65ae7f3e730ac17.png)
【角色管理】2:点编辑权限弹出角色极限窗口,点击选择菜单权限
![](https://img.haomeiwen.com/i1428538/60f399dd8f3bf489.png)
【角色管理】3:编辑按钮权限,grid中只会出现菜单权限中选中的行,每个功能有哪些按钮在菜单中已定义好,这里只要勾选按钮即可
![](https://img.haomeiwen.com/i1428538/7d752b041960ffdb.png)
【角色管理】4:编辑数据权限 可以多选,但只有一个默认值,该角色新增的业务单据的授权代码为默认的授权代码。
![](https://img.haomeiwen.com/i1428538/bd2aacfc486dbcf9.png)
【角色管理】5:编辑字段权限 grid中只会出现菜单权限中选中的行,直接在允许或拒绝中输入字段名,多个字段用逗号隔开
![](https://img.haomeiwen.com/i1428538/543c60a25589e5d6.png)
【角色管理】6:点击管理成员,弹出此窗口
![](https://img.haomeiwen.com/i1428538/19ba08751669d8c4.png)
【角色管理】7:成员管理 点击添加按钮
![](https://img.haomeiwen.com/i1428538/f0bdc36081df8806.png)
功能5:用户管理【用户管理】1:左边机构可以过滤,直接在grid中增删改查用户
![](https://img.haomeiwen.com/i1428538/0565ca291ed2b281.png)
【用户管理】2:设置机构 可多选,这里机构录入的太多了,出现了滚动条,少些会好看点。
![](https://img.haomeiwen.com/i1428538/145696011b5d526c.png)
【用户管理】3:设置角色 可多选
![](https://img.haomeiwen.com/i1428538/bb98ea08a15f90e0.png)
【用户管理】4:用户设置 用户登陆后的一些配置信息,比如指定用户的桌面,默认的项目,不同的系统可能会有不同的需求,所以这里设计可添加删除的,右上角下拉出来的[个人设置]页面也指向这里的数据
![](https://img.haomeiwen.com/i1428538/1ae56bfabdefd591.png)
功能6:数据字典【数据字典】1:左边类别树可过滤,左边是树形grid,可以有层级关系,直接在grid中编辑
![](https://img.haomeiwen.com/i1428538/20db6fc2221d25f9.png)
【数据字典】2:点击管理类别,类别可在弹出的grid中增删改查
![](https://img.haomeiwen.com/i1428538/da5c91bf68ad8a3e.png)
功能7:系统参数
【系统参数】直接grid中编辑,设计了一个是否可编辑字段,只能编辑 是否可编辑为true的参数
![](https://img.haomeiwen.com/i1428538/a205c18869402bc4.png)
功能8:操作日志【操作日志】1:登陆日志
![](https://img.haomeiwen.com/i1428538/e8f0c0816c8fdeba.png)
【操作日志】2:业务操作记录
![](https://img.haomeiwen.com/i1428538/0acb07801b4dfd89.png)
【操作日志】3:系统日志
![](https://img.haomeiwen.com/i1428538/18dacdac74a2d0f8.png)
【操作日志】4:系统日志 查看系统日志
![](https://img.haomeiwen.com/i1428538/cf12141e81c92aef.png)
如果大家感兴趣,就在右下角帮我【推荐】一下吧,谢谢大家了。我接下来就按照功能列表一篇一篇的来写,下一篇就先开始写菜单管理。
这里整个系统都是采用我的zephyr.net框架开发,应用mvc4.0 webapi easyui knockoutjs开发的实现的。
----------
![关注我的公众号.jpg](https://img.haomeiwen.com/i1428538/27b8b23065ed36aa.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
网友评论