上次运行完以后随便点了点就没看,时隔一个周,继续学习这传说优点>缺点的mvc

本来想按老步子走,链接数据库>增加>查询>更改>删除,但这些东西之前还有个数据库要建立,建咱就好好建,没有更贱只有最贱,这节就把数据库弄起来吧,别说你数据库牛X哈,牛X的跳过,本节和mvc没关系,和mvc他妈的数据库有关系,大牛请闪人,但为了一点一点做就这么来吧,不是做个demo就会啦,那是真正的菜鸟,ok,总是废话一大堆,要么总有那么多人说哥们我贫呢,不错偶是贫穷不是贫嘴,哈哈,开始

之前做企业erp 的时候总有一些公司的权限角色要求很变态,如何建一个权限管理方案适应这些老总们的管理方式(其实感觉还真的就是做权限就是做的公司管理方式,体会吧),查相关文档得,完全的通用是不可能的,那么就建个相对通用的吧,这里就简单说一下,由于powerdesigner 不太熟练关系暂且不画直接用虚线表示,这个设计模式采用某个人(具体不知道是谁)的。如下

这个模型有八个实体,下面对其作一些解释:
1). 资源:系统中的资源,主要是各种业务对象,如销售单、付款单等。
2). 操作类型:对资源可能的访问方法,如查询、增加、删除、修改等。
3). 功能:对资源的操作,是资源与操作类型的二元组,如增加销售单、修改销售单等。  
4). 数据类型:业务系统中常用的数据权限类型,如公司、部门、项目、个人等。
5). 数据对象:具体的业务对象,如甲公司、乙部门等等,包括所有涉及到数据权限的
对象值。
6). 角色:特定功能权限的集合,如销售经理,销售员等,一个角色有若干个功能权限。  
7). 用户:应用系统的具体操作者,用户可以自己拥有功能权限信息,可以归属于 0~
n 个角色,可属于 0~n 个组。它与权限、角色、组之间的关系都是 n 对n 的关系。
8). 组:为了更好地管理用户,对用户进行分组归类,简称为用户分组。组也具有上下
级关系,可以形成树状视图。

然后一定要把下面这段长长的文字读完,很好理解的

///*********************废话有时候也有助于理解下面的这段废话就不错*******************************************

与传统设计相比,保留了用户表、用户角色表、角色表和角色功能权限表。不同的地方
有两个:
1) 把功能权限表拆分开,由资源和操作类型这两张表相结合构成。系统资源为树形结
构,如合同模块,销售模块等,操作类型记录系统能对资源采取的操作,如增加、删除、修改、
查询等。功能权限就是对资源的操作,是资源与操作类型的组合。这种设计也为以后系统作
功能方面的扩展提供结构上的支持。
2) 增加了用户权限表和用户角色权限屏蔽表。因为各种业务系统中,特别是大型企业,
系统的用户由于工作职责的需要,各自的权限可能随之发生变化,另外用户的业务需求灵活
多变,系统的功能可能不断增加或更新,权限也要相应变化。 角色的定义通常随时间和业务的
调整发生变化,而且多个角色的权限往往相互重叠。 因此,有必要改进仅仅通过调整角色的定
义来改变授权的传统设计,使功能权限管理更加灵活,更容易满足复杂情况变化的需要。
同一个角色对属于不同组织的用户拥有的权限是一样的, 如果其中用户 A 由于业务要求
需要只是暂时拥有某项权限 p,假如增加现有角色的权限,则必然会使被赋予该角色的所有
用户都增加了权限 p,这显然不合适。假如仅仅为了这个用户的临时需求而新建一个角色,
然后赋予用户 A。当撤销该权限时,还必须删除这个角色的定义,操作起来较繁琐,如果系统
经常出现这种情况的话,那角色的数量就显得很臃肿了。决定增加一个用户权限表,使系统
可以直接对用户授权。
同理,如果只能暂时让用户 A 拥有某个角色的绝大部分权限,但此角色的有些权限不能
赋予此用户。比如角色 r 的权限有(p1,p2,p3),用户 A 只能拥有(p1,p2),不能拥有 p3。此时
如果新建另一个角色给用户 A,也显得繁琐而且没有必要,因为这只是一个暂时的情况,当 A
退出后,还要删除此角色。决定增加一个用户角色权限屏蔽表,使系统能屏蔽该用户某个角
色的部分功能。如上述的例子,只要给用户 A 赋予角色 r,同时对用户 A 赋予的角色 r 的权
限作一定的裁剪,裁掉权限 p3,就可以满足需求了。
在建立用户角色表时,增加一个是否增加权限字段(Add)和一个是否屏蔽角色权限字段
(Sub)。如果 Add 为1,则说明此用户除了角色所赋予的权限外,还有特殊权限,这时候还要加
上用户权限设置表中所设置的权限;如果Sub为1,则说明用户不能得到所处于的角色的所有
权限,这时候要把此角色的所有权限减去用户角色权限裁减设置表中相应的权限,才是此用
户在此角色下的权限。
这种功能权限控制的扩展设计还是以对角色授权为主, 辅以对用户授权和对特殊用户的
部分角色权限作相应的屏蔽,有效地弥补了 RBAC 角色授权机制管理相对生硬的缺陷,使得权
限管理变得更灵活,安全有效,同时符合现代企业组织结构的管理特点。

数据权限就是能在哪里干什么的问题,如查看广州分公司采购部张三的订货单。传统的
设计只涉及到功能权限,无法对数据权限进行控制。 企业级系统发展到今天,涉及到更多的业
务数据处理,所以数据权限对敏感数据尤其重要。一般来说,数据权限依赖于功能权限,是对
功能权限的进一步描述,用来说明角色在指定的功能点上对具体某一个数据的权限控制。

数据类型表存放业务系统中常用的数据权限类型,如公司、部门、项目、个人等。数据
对象表则记录各个数据类型的对象实例,也就是具体数据,如客户“广州电信” ,部门“销售
部” 。资源与数据类型的关联表(多对多)为配置表,说明某种资源可能需要的控制点,资
源也可能涉及到细化,比如销售模块中的销售订单可能需要分客户进行统计,这种情况下权
限的配置就需要按客户进行分配,这种模式通过资源数据类型关联表来反映,这是一张配置
表,可以用来说明某种资源需要的权限控制点。
组织表仅仅表示用户所属的组织,是多对多的关系,组织不参与授权。有些基于组的设
计,如文献[3],组织分别与功能权限和角色相关联,用户在哪个组织就拥有哪个组织级别
的数据权限,例如李四是广州采购部的经理,他可以有增删改查广州采购部所有的订购单。
但这种数据权限只能控制在组织这个层次,非常局限。如果用户属于某组织,但他只能有本
人这个数据级别的功能权限,这种设计是做不到的。例如张三是广州采购部的普通员工,他
只能有增删改查自己的订购单。
我们增加一个用户组织数据对象的关联表,添加了用户要控制的数据级,当添加用户的
时候,如果他属于若干个组,每个组相应设置需要控制的数据权限级别,当要删除所属组的
时候同时就一并取消了要控制的数据权限级别了。例如,李四在广州采购部,如果他只是普
通的员工, 就将数据级设置为李四本人, 于是他只能增删改查自己的采购单; 如果他是经理,
就将数据级设置为广州采购部,他就能增删改查他所属部门的采购单;如果将数据级设置为
A 客户,他就只能增删改查 A 客户的采购单。前提是已经在资源数据类型关联表中已经设置
好采购单可以按部门、本人、客户来分配。数据权限的控制就是通过以上的表来完成的,可
以在系统中很灵活的增加数据的权限控制点。

3.该设计方案的实现流程
基于以上设计的权限管理系统分为用户管理、角色管理、组织管理、功能管理和操作日
志管理五部分。
其中用户管理包括所属角色、所属组、用户权限、用户总权限。某个用户总的权限信息
存在如下计算公式:用户权限 = 所属角色权限合集 + 用户自身权限 – 用户角色裁剪权
限。每添加一个所属组,就要配置数据权限级别。角色管理包括包含所赋予的用户和角色权
限。组管理即对用户所属的组织进行管理,组织以树形结构展示,组织管理具有组织的增、
删、改、查功能。功能管理对操作类型和资源进行组合,成一个完整的功能,供授权。操作
日志管理用于管理本系统的操作日志。 这样就形成了一套较完整的大型信息系统的权限管理方法。

在具体应用中,系统首先通过用户表的用户名和口令验证此用户是否是合法用户, 用户
表中的密码通过 MD5 加密算法加密,使他人无法从数据库表中直接查看用户密码,只有合法
用户才能进入应用系统。然后,通过用户角色表获得当前用户所属的角色,再根据角色权限
表、 用户权限表以及用户角色权限屏蔽表确定用户在整个系统功能中的权限集合, 即用户权
限 = 所属角色权限合集 + 用户自身权限 – 用户角色屏蔽权限。 当用户调用某功能的应用
时,通过查看用户的权限集合能够准确无误地判断用户是否有权访问,若有权访问再看用户
拥有什么数据权限级别,对相应的资源进行操作。

菜鸟不菜学习mvc(二)(权限设计插曲)相关推荐

  1. 电系魔法师成长之路—仪器仪表学习(二)设计T型和Π型衰减器

    电系魔法师成长之路-仪器仪表学习(二)设计T型和Π型衰减器 一.用途 ​ 衰减器是一种提供衰减的电子元器件, 广泛地应用于电子设备中,它的主要用途是:(1)调整电路中信号的大小:(2)在比较法测量电路 ...

  2. 鸟哥私房菜学习(二)Linux是什么与如何学习

    Linux是什么与如何学习 一.Linux是什么 二.Linux的背景和历史 三.托瓦兹与LInux的发展 Linux虚拟团队的产生和发展 Linux的内核版本 Linux发行版本 四.Linux当前 ...

  3. ASP.NET MVC +EasyUI 权限设计(三)基础模块

    请注明转载地址:http://www.cnblogs.com/arhat 在上一章中呢,我们基本上搭建好了环境,那么本章我们就从基础模块开始写起.由于用户,角色,动作三个当中,都是依赖与动作的,所以本 ...

  4. 自举电路的学习(二)——设计选型

    ​ 自举电路电路图 初始化充电: 系统上电时自举电容电压为0V,或者当自举电容电压可能会降至欠压点以下时,需要对自举电容进行充电.一般情况下,可以通过开通所有N侧IGBT实现自举电容充电. 自举电容充 ...

  5. 白话学习MVC(一)开篇介绍及目录

    开篇介绍 在这里我想将自己在学习过程中了解的知识点整理下,一来对所学东西的过个巩固,二来再次记录一下以便以后翻看. 写这博文的目的是将自己的所学做一下整理,尽量用白话来描述,从而可以更加直观的了解.但 ...

  6. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据 ...

  7. asp.net MVC 权限设计

    几点说明: 1.该权限系统是个网站用的,用户简单,因此不涉及到部门这些信息 2.基于将角色与controller.action相关联来判断用户是否有权 3.通过重载AuthorizeAttribute ...

  8. asp.net MVC 权限设计(续)

    asp.net MVC 权限设计一文中没有demo放出来,应大家的要求,这里补充上文并放出demo. 几点说明: 1.基于将角色与controller.action相关联来判断用户是否有权 2.通过自 ...

  9. ASP.NET MVC 2 学习笔记二: 表单的灵活提交

    ASP.NET MVC 2 学习笔记二:  表单的灵活提交 前面说到有做到公司内部的一个请假系统,用的是ASP.NET MVC 2+Entity Framework.虽然EF(Entity Frame ...

最新文章

  1. Domain Driven Design and Development In Practice--转载
  2. Py之folium:python库之folium的简介、安装、使用方法之详细攻略
  3. Python环境(基于Pycharm和官方python包)搭建顺序
  4. JavaScript复制数组
  5. Tensorflow ExponentialMovingAverage 详解
  6. vijos-1003等价表达式
  7. 关于RUP的一点见解,针对于近期的面向对象方法课程
  8. 建筑业建筑业大数据行业现状_建筑—第4部分
  9. 横向合计代码 锐浪报表_巧用锐浪报表:用报表脚本实现动态显示小数位数
  10. Python3使用SMTP协议发送电子邮件
  11. cygwin解压linux软件,如何在Cygwin上安装unzip | 望天博客
  12. nfc卡模式与标准模式_解析目前NFC具有的三种工作模式
  13. IOS 开发第一个HelloWorld
  14. PaddlePaddle在优化方法处报错 EnforceNotMet: Enforce failed
  15. python爬取推特的详细教程_使用Selenium Python进行网页抓取[Twitter+Instagram]
  16. 阴沟里翻船,我将11月2日定为每年的受耻日!
  17. 你好 Redis,能回答我 7 个问题吗?
  18. “第二期政府CIO论坛”顺利举行
  19. 什么是数字化供应链系统?企业如何利用数字化供应链系统增加销售渠道?
  20. html视频文件转换成视频,Amazing Video to HTML5 Converter(视频到HTML5转换器) V1.7.0 官方版...

热门文章

  1. 【论文阅读】A Comprehensive Study on Cross-View Gait Based Human Identification with Deep CNNs
  2. 大白话5分钟带你走进人工智能-神经网络之tensorflow的前世今生和DAG原理图解
  3. 2022 CSP-J 游记
  4. python:写prt头文件
  5. oo,aop,ioc概念详解
  6. 系统集成项目管理工程师-第三章 信息系统集成专业技术知识
  7. 图像处理职位面试题汇总(2)
  8. 无线网卡的4种工作模式
  9. JAVA练习114-猫和老鼠
  10. Java套版生成动态图片