用户权限管理基础原理的讲解-------玩转它!

摘要:
我的答案是没有用户权限:我想很多朋友以前在开发管理系统时都使用过这种权限模式。虽然这种方法比较原始,但它可以解决我们上面遇到的问题。当然,还有一些小的改进要做。在角色中,我们只告诉用户他们可以做什么,我们不能不告诉他们就做什么。根据角色批量判断权限就足够了,而用户的个人权限判断有些特殊,它必须跳出角色。

一、基础讲解。

   最近用到了RedGlove Permission权限管理系统,将自己的设计思路以及开发过程一起分享给大家,希望大家能多提意见。

  

首先,我来介绍一下权限系统的主要组成部分它主要由模块权限功能模块、角色权限、用户权限三大部分组成,下面将详细介绍一下三大权限的作用以及它们互相存在的依赖性

模块权限部份:

      说白一点就是管理系统中的功能模块,而在这些模块中,它们有着各式各样的具体的操作,这些具体的操作权限就是模块权限,例如现新加了一个用户管理的功能模块,在这个

      模块设计中需要进行浏览、添加、修改、删除、审核、查询(用户管理)等一些具体的操作,在系统运行的过程中,不是所有的用户都会拥有这些权限的(功能的),根据需求(需要得到功能),就产生了下

      的角色权限。

角色权限部分:

它就是一个身份(管理员/员工),拥有这个身份的用户在系统中能做些什么,不能做些什么,用户都得依照这个身份,无法过界,这也是一个权限的范围限定在一个管理系统有很多的用户,我们不能将模块中

      的权限逐个的分配给用户,在角色的出现就解决了这个问题,它就像一个权限组,将模块的权限指派给角色,让拥有该角色的用户可以拥有对模块对应的操作权限,然而,一个系统中用户可能会成千上万不

      等,但我想角色最多不过几十个,将模块权限授权给几十个角色比授权给上万个用户轻松多了,角色虽然是权限组,有限定的作用范围,但是也有会出现意外情况的时候,如果一个用户有操作用户模块的角色,

      但对它的有个特殊的要求,就是不能操作用户模块中的删除或其它功能,还有就是它还有操作另外模块的权限,而它拥有的角色只能访问用户模块,怎么办呢?难道要为这一个用户再建立一个角色吗?我的回答

      是No.

用户权限:

我想很多朋友以前在开发管理系统时都用过这种权限模式,虽然这种方法比较原始,但它能解决我们上面所遇到的问题,当然,还需要做一些小小的改进,在角色中,我们只告诉用户能做什么,没有告诉的就不能做,

以角色做权限批量判断这点已经够了,而用户单独的权限判断有点特殊,它得跳出角色。它的权限优先于角色的权限,它拥有对某权限允许和禁止操作的功能,例如一个用户的角色权限可以操作用户模块所有的功

能,而该用户拥有了该模块某一功能的禁止权限,那该用户不能对这个模块进行该功能操作,反之,用户角色没有授权这个模块功能,而用户权限被授予了这个功能模块的允许权限,那它就能操作该功能,流程图如

下:

用户权限管理基础原理的讲解-------玩转它!第1张

如果这个不能让你完全理解,那就在看看这个链接:http://www.cnblogs.com/Gavinzhao/archive/2009/11/10/1599691.html

权限管理的代码实现请看下篇博客~~~~~~~~

免责声明:文章转载自《用户权限管理基础原理的讲解-------玩转它!》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇了不起的Nodejs学习笔记(前五章)c#中的23种设计模式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Vue实现左侧可伸缩

导出默认值{name:‘Home’,data(){return{openStatus:true,open_close:true,}},方法:{change()}this.openStatus=!this.openStatusif(this.open状态){setTimeout(()=˃{this.open_close=true},1000)}else{set...

嵌入式linux GUI--DirectFB + GTK至尊秘笈

我开始在x86上构建GTK环境。首先,我选择了最新版本。然后,我看到了GTK在帧缓冲区上以两种模式运行的介绍:DirectFB和linuxfb,而Linuxfb项目似乎已经停止。主要方向是DirectFB。后来,我找到了一个DirectFB+GTK的英文文档,它基本上使用了最新版本。许多软件包可以使用系统自己的,因此您可以编译必要的源代码。一开始,编译并不成...

【646】灰度图array转为RGB三通道array

可以使用两种方法:numpy可以通过cv2.cvtColor函数自行实现。灰度图像可以转换为RGB的所谓灰度图像,分成三个通道,这意味着三个通道都是相同的信息,相当于相同维度信息的重复。主要通过numpy实现。阵列,其可以类似于广播的形式实现。...

GPU与CPU

GPU和CPU CPU,也称为中央处理单元,主要由控制器、运算单元、寄存器、高速缓冲区和数据/控制/状态总线组成。GPU GPU称为GraphicsProcessingUnit,即图形处理器。GPU最初是为终端游戏设计的。由于对游戏中的大量数据重复相同的操作,GPU面临着类型高度统一、相互依赖的大规模数据。GPU的内核远多于CPU。它向多个内核发送相同的指令...

ubuntu的ufw如何开放特定端口?

ubuntu的ufw是如何打开特定端口的?1.安装sudoapt getinstallufw2.启用sudoufwenable以默认情况下禁用外部访问sudoufwdefaultdeny 3.查看状态sudoufwstatus4.添加端口sudoufwallow80805。删除端口sudoufwdeleteallow808080806。允许特定源的IP地址从...

如何下载Chrome离线版EXE安装文件和MSI版安装文件

对于Chrome的稳定版本(官方版本),您只需添加“?”在Chrome的“最终用户许可协议”页面上的链接之后?Standalone=1对于Beta版和开发版Chrome,只需记住以下地址:http://dl.google.com/chrome/install/{versionnumber}/crome_安装程序中的版本号。exe表示要下载的Chrome版本号...