权限设计实现(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)的更多相关文章

  1. JAVA 数据权限设计

    数据权限设计 前言 在各种系统中.要保证数据对象的安全性以及易操作性,使企业的各业务部门.职能部门可以方便并且高效的协同工作,那么一个好的数据权限管理设计就成为一个关键的问题.尽管企业中各个单元的工作 ...

  2. 权限系统设计实现MVC4 + WebAPI + EasyUI + Knouckout

    权限系统设计实现MVC4 + WebAPI + EasyUI + Knouckout (一) 一.前言 之前的博客一直都还没写到框架的实现及权限系统,今天开始写我的权限系统,我以前做过的项目基本上都有 ...

  3. 介绍我最近做的网站 Asp.Net MVC4 + BootStrap

    一.前言 最近一直在做一个多站SEO数据分析的站点(www.easyyh.com),用了一些新技术,如Asp.Net MVC4,BootStrap,EasyUI,这些都是以前没有搞过的,最近搞得差不多 ...

  4. AppBox升级进行时 - 扁平化的权限设计

    AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块. AppBox v2.0中的权限实现 AppBox v2.0中权限管理中涉及三个 ...

  5. 11款扁平化设计的 Twitter Bootstrap 主题和模板

    扁平化设计和 Bootstrap 框架是2013年网页设计领域的两大设计潮流.把这两者集合起来不是件容易的事情,使用下面这些主题和模板将节省我们的开发时间,因为我们可以修改已有的基础代码,而不是从零开 ...

  6. 一个基于RBAC0的通用权限设计清单

    注:RBAC0与RBAC1不同在于权限继承.关于RBAC1的权限设计,敬请关注作者后续CSDN博客.1,用户表 保存系统用户信息,如张三.李四,字段可以有id.name.fullname.email. ...

  7. 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(四)授权代码维护

    一.前言 权限系统设计中,授权代码是用来控制数据访问权限的.授权代码说白了只是一树型结构的数据,没有什么其它的业务意义.那么这个页面的功能也就非常简单授权代码维护:新增.修改.删除授权代码数据. 二. ...

  8. 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(三)图形化机构树

    一.前言 组织机构是国内管理系统中很重要的一个概念,以前我们基本都是采用数据列表的形式展现,最多只是采用树形列表展现.虽然够用,但是如果能做成图形化当然是最好不过了.这里我不用任何图形控件,就用最原始 ...

  9. 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(二)菜单导航

    一.前言 上篇博客中已经总体的说了一下权限系统的思路和表结构设计,那接下来我们就要进入正文了,先从菜单导航这个功能开始. 二.实现 这个页面基本不用什么需求分析了,大家都很明白,不过在这个页面要多维护 ...

随机推荐

  1. LAN远程重启server安全方法

    原创文章.转载请注明出处.(百度经验:http://jingyan.baidu.com/article/454316abaadc41f7a7c03a13.html) 在局域网中,管理和操作server ...

  2. ASP.NET Core官方资料入口

    ASP.NET 5 has been renamed to ASP.NET Core 1.0 传送门

  3. 使用Heroku,需要locale至zh_CN,代替zh-CN

    使用Heroku.需要locale至zh_CN,代替zh-CN 我认为这是由于在application.rb于,config.i18n.default_locale默认接受值这是Symbol, 而当我 ...

  4. 【原】谈谈promise

    最近在看<你不知道的javascript中卷>,发觉作者花了基本一半的篇幅去讲异步和promise,觉得有必要总结一下. 其实本文的目的是想手写一个Promise的,无奈总结着总结着发觉篇 ...

  5. hdu4570Multi-bit Trie (间隙DP)

    Problem Description IP lookup is one of the key functions of routers for packets forwarding and clas ...

  6. windows下一个,OracleServiceXXX和Oracle 关系实例

    其实,windows下的oracle,在oracle实例启动时,是全然依赖于 window服务中的OracleServiceXXX .这个XXX就是oracle的实例名(注意啊,不是数据库名称,而是实 ...

  7. harris 算法python实现

    harris 最常用作特征检测算法. 第一个文件harris.py <pre name="code" class="python">from sci ...

  8. Grunt 之 Connect

    前端开发 Grunt 之 Connect 在前端开发过程中,我们需要在开发过程中,将开发中的站点部署到服务器上,然后,在浏览器中查看实际的效果,在 Grunt 环境下,可以直接使用集成在 Grunt ...

  9. solaris X86-64下一个ORACLE战斗11.2.0.3.8在一波折叠补丁

    solaris X86-64下一个ORACLE战斗11.2.0.3.8补丁: 正确的步骤: 1.BUG6880880 .OPATCH补丁 2.BUG16902043.11.2.0.3.8补丁 情感是练 ...

  10. 如何将linux用在开发环境中的

    如何将linux用在开发环境中的 1.我为什么要写这篇文章 一直想深入学习一下linux的使用,于是将家里的笔记本装了linux系统,但是要将自己的系统打造一个适合开发的环境确实是一件费心费力的事,而 ...