权限设计实现(MVC4+Bootstrap+ PetaPoco+Spring.Net)
权限设计实现(MVC4+Bootstrap+ PetaPoco+Spring.Net)
一、前言
至毕业后一直在做企业Web开发,做过的项目也有不少,每个项目的框架设计都不是一样,但是每个项目的权限模块都是我做的,这样慢慢以来,就形成自己的一套权限开发框架,并成功的在自己做过的几个外包项目中使用,反应较为不错,尤其是BootStrap的页面风格深受客户喜欢。
二、框架设计
下面就开始看图说话环节:
架构设计
详细解决方案
01_Murphy.Web:表现层,采用了区域方式实现了各个模块的分离
02_Murphy.Business:业务逻辑层
03_Murphy.Core:框架核心层,主要是一些缓存处理,参数处理,日志处理等。
04_Murphy.Data.SQLServer:数据访问层
05_Murphy.DbUtility:数据库操作类,引入PetaPoco并做了少量的修改以适应
06_Murphy.Entity:实体层
07_Murphy.IData:数据访问接口层
08_Murphy.Utils:工具类,里面包含了很多东西如文档处理、加密解密、分页处理、验证码等等
技术选型
01_ASP.NET MVC 4.0作为页面服务
02_PetaPoco轻量级ORM框架用于数据持久化
03_BootStrap 做为页面展示,做了大量定制,完美支持IE8,这也是深受客户喜爱的原因
04_artDialog 作为弹出层插件
05_zTree 作为树插件
06_My97DatePicker 作为日期插件
07_Noty 作为信息提示插件
08_TreeGrid 作为树表格插件
09_Log4Net 作为日志组件
10_Json.NET 作为序列化组件
11_ Highcharts作为图形化报表插件
三、需求分析
首先我们需要理解到底什么是权限,以及如何在项目中运用权限,在这里我根据自己的理解描述下,希望各位轻拍。
1、权限性质
权限系统的应用者应该有三种不同性质的使用
1.使用权限
2.分配权限
3.授权权限
前两个都比较好理解,在这里我重点解释下授权权限是什么。例如目前给公司做的一套销售管理系统,是面向全国加盟商的,每个加盟商都有自己的用户,在系统中由各个地方的加盟商管理员创建编辑冻结用户,并给用户分配角色授权等。总部人员不用直接管理,但是加盟商管理员的权限是由总部人员授予的。讲再俗一些,就是委托别人来管理、可以授权给别人来管理某个业务。
2、权限资源
权限资源一般情况下分为四类。
1.操作权限 部门经理能够审批、而员工不可以
2.字段权限 部门经理能够看到本部门下所有员工的岗位值,而员工只能看到自己的岗位值
3.模块权限 经理和员工登陆系统后拥有的功能模块是不一样的
4.数据权限 部门经理可以看到本部门下所有员工的工作计划,而员工只能看到自己的工作计划
3、功能列表
现在网上很多的权限系统都基于角色访问控制,基于用户控制的很少,但是在很多情况下基于用户授权是很方便的,本系统不仅支持角色授权,还支持用户授权。首先我们要明确我们要去实现哪些东西。
1.操作权限项
2.功能模块
3.岗位管理
4.角色管理
5.组织机构
6.用户管理
7.数据字典
8.系统参数
9.日志管理
9.1 登陆日志
9.2 操作日志
9.3 系统日志
10.代码生成
10.1 命名空间
10.2 类库命名
10.3 保存目录
四、设计实现
1、表设计
这里重点说下关于权限的存储, 其实不必想得那么复杂,看透了,也是很简单的事情,就是 “什么主体在什么领域有什么权限?”把这个逻辑关系想清楚了就可以了,你这样设计了,扩展了系统灵活性,将来也容易维护一些。自己的权限系统是按“什么主体在什么领域有什么权限?”的设计思想开发的。
什么是主体:在系统里确定各种对象的唯一性,一个是对象的类别,一个是对象的主键,就像是系统中的用户(主键)
什么是领域:其实就是一种资源,需要一个主键来识别资源的唯一性,领域可以是个页面,也可以是个页面上的按钮
什么是权限:权限可以是“可见”,可以是“只读”,也可以是“可用”
2、页面设计
不多说了,先上图吧。整个系统是基于BootStrap定制开发的,页面效果还行。
首页展示
功能1:操作权限项
操作权限项分为两类:操作按钮权限、字段访问权限。
1.列表页
2.表单页
功能2:功能模块
1.列表页
2.表单页
功能3:角色管理
1.列表页
2.角色分配权限
2.1功能模块
2.2 操作按钮
2.3 数据权限
2.4 字段权限
功能4:岗位管理
1.列表页
2.表单页
功能5:组织机构
1.列表页
2.分配角色
功能6:用户管理
1.列表页
2.表单页
3.分配角色
4.用户授权
4.1 功能模块
4.2 操作按钮
4.3 数据权限
4.4 字段权限
功能7:数据字典
1.列表页
2.表单页
3.管理字典类别
功能8:系统参数
功能9:缓存设置
选择要更新的用户
功能10:登陆日志
功能11:操作日志
操作日志明细
功能12:系统日志
查看系统日志
功能13:代码生成
1.命名空间
2.类库命名
3.保存目录
4.代码生成
如果大家感兴趣,就在右下角帮我【推荐】一下吧,在这里谢谢大家了。我接下来就按照模块列表一篇一篇的来写。最后我创建了一个技术交流群:263169088,欢迎大家来交流。
权限设计实现(MVC4+Bootstrap+ PetaPoco+Spring.Net)的更多相关文章
- JAVA 数据权限设计
数据权限设计 前言 在各种系统中.要保证数据对象的安全性以及易操作性,使企业的各业务部门.职能部门可以方便并且高效的协同工作,那么一个好的数据权限管理设计就成为一个关键的问题.尽管企业中各个单元的工作 ...
- 权限系统设计实现MVC4 + WebAPI + EasyUI + Knouckout
权限系统设计实现MVC4 + WebAPI + EasyUI + Knouckout (一) 一.前言 之前的博客一直都还没写到框架的实现及权限系统,今天开始写我的权限系统,我以前做过的项目基本上都有 ...
- 介绍我最近做的网站 Asp.Net MVC4 + BootStrap
一.前言 最近一直在做一个多站SEO数据分析的站点(www.easyyh.com),用了一些新技术,如Asp.Net MVC4,BootStrap,EasyUI,这些都是以前没有搞过的,最近搞得差不多 ...
- AppBox升级进行时 - 扁平化的权限设计
AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块. AppBox v2.0中的权限实现 AppBox v2.0中权限管理中涉及三个 ...
- 11款扁平化设计的 Twitter Bootstrap 主题和模板
扁平化设计和 Bootstrap 框架是2013年网页设计领域的两大设计潮流.把这两者集合起来不是件容易的事情,使用下面这些主题和模板将节省我们的开发时间,因为我们可以修改已有的基础代码,而不是从零开 ...
- 一个基于RBAC0的通用权限设计清单
注:RBAC0与RBAC1不同在于权限继承.关于RBAC1的权限设计,敬请关注作者后续CSDN博客.1,用户表 保存系统用户信息,如张三.李四,字段可以有id.name.fullname.email. ...
- 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(四)授权代码维护
一.前言 权限系统设计中,授权代码是用来控制数据访问权限的.授权代码说白了只是一树型结构的数据,没有什么其它的业务意义.那么这个页面的功能也就非常简单授权代码维护:新增.修改.删除授权代码数据. 二. ...
- 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(三)图形化机构树
一.前言 组织机构是国内管理系统中很重要的一个概念,以前我们基本都是采用数据列表的形式展现,最多只是采用树形列表展现.虽然够用,但是如果能做成图形化当然是最好不过了.这里我不用任何图形控件,就用最原始 ...
- 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(二)菜单导航
一.前言 上篇博客中已经总体的说了一下权限系统的思路和表结构设计,那接下来我们就要进入正文了,先从菜单导航这个功能开始. 二.实现 这个页面基本不用什么需求分析了,大家都很明白,不过在这个页面要多维护 ...
随机推荐
- SQL Server 2008性能故障排查(三)——I/O
原文:SQL Server 2008性能故障排查(三)--I/O 接着上一章:CPU瓶颈 I/O瓶颈(I/O Bottlenecks): SQLServer的性能严重依赖I/O子系统.除非你的数据库完 ...
- HTTP长连接和短连接(转)
1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议.IP协议主要解决网络路由和寻址问 ...
- ipset高大上性能果断将nf-HiPac逼下课
netfilter.sourceforge,github上有一个凄凉的项目,那就是nf-hipac.这个以前给Linux firewall设计带来希望的项目早在2005年就停止了更新和维护,而我本人则 ...
- 【Java】实现一个根据日期判断星座程序的编写
思路 直接根据月份做索引,然后根据日期边界判断是本月的星座还是上月的. 算法 private static String getAstro(int month, int day) { String[] ...
- linux sdio card睡眠治疗 sdio card removed解决方案
近期调试几款sdio card suspend时都会出现sdio card removed,之后 要么死机要么模块不能正常工作.根本原因也就是休眠没有处理好.昨天最终找到了 解决方法. 1:host端 ...
- NSIS:安装、卸载时检查程序是否正在运行
原文 NSIS:安装.卸载时检查程序是否正在运行 如果我们要安装或升级的程序正在运行,文件肯定会替换不成功,以下代码可以提示用户结束正在运行的程序. 需要使用插件FindProcDLL.dll,下载路 ...
- .NET应用架构设计—四色原型模式(色彩造型、域无关的模型)(概念版)
阅读文件夹: 1.背景介绍 2.问自己,UML对你来说有意义吗?它帮助过你对系统进行分析.建模吗? 3.一直以来事实上我们被一个缝隙隔开了,使我们对OOAD遥不可及 4.四色原型模式填补这个历史缝隙, ...
- The JSON request was too large to be deserialized
The JSON request was too large to be deserialized 这个问题出现的场景并不是很多,当你向服务端异步(ajax)post数据非常大的情况下(比如做权限管理 ...
- 百度CSND博客在搜索栏中显示图片
原先以为百度搜索结果有图片是能够人为控制的,结果发现并非这样. 近期百度搜索结果的每一个条目左側出现了小图片,这一变化能够说是极大满足了用户的体验,不用进入站点就提前直观的推断出站点内容是否是自己要找 ...
- android 有效载荷大图,避OOM
我们的项目往往会载入图片.有时,承担太多,再装图片,它导致了非常小的程序卡,而在铅oom从而导致异常app再见,今天翻译google官方网站,它已经做了很好的图像处理汇总,由于Google我们已经给解 ...