在管理软件系统设计中,用户、角色、权限管理是不可缺少的三部分,三者具有如下关系:
User : Role = 1 : n
Role : Permission = 1 : n
如将权限控制到具体的功能模块,又有如下关系:
Role : Module : Permission = 1 : 1 : n

UserRole的设计很直观,就是1:n的关系表,User、Role均为主键。下面具体谈谈RolePermission的关系设计。
RolePermission完全可以采用和UserRole同样的设计,但要求Role、Module、Permission三个主键,此时处理 Role : Module : Permission的 1 : 1 : n 关系,显得有些费劲。针对于所有的功能模块,Permission 均可划分为以下几种:
1. 列表/查看
2. 新增
2. 修改
4. 删除

我们可以将“Role : Module : Permission = 1 : 1 : n” 中的“n”想办法变成“1”。设各权限值分别如下(2倍等比递增的关系):
1. 列表/查看 = 2
2. 新增 = 4
2. 修改 = 8
4. 删除 = 16
此时的“Role : Module : Permission”中的Permission等于上述四种操作权限中所拥有的权限值之和,比如:若某个(Role + Module)拥有查看、新增、修改、删除的权限,则其Permission=2+4+8+16=30。

下面进行权限检测,判断“(Role + Module)”所对应的Permission是否包含上述四种操作权限中的每一个。解决问题关键:使用“&”运算符。比如:
判断Permission是否包含“查看”的权限值,就用 if((Permission & 2) == 2)
判断Permission是否包含“新增”的权限值,就用 if((Permission & 4) == 4)
判断Permission是否包含“修改”的权限值,就用 if((Permission & 8) == 8)
判断Permission是否包含“删除”的权限值,就用 if((Permission & 16) == 16)

原理(转化为二进制,进行“与”运算):
30 & 2 = 00011110 & 00000010 = 00000010
30 & 4 = 00011110 & 00000100 = 00000100
30 & 8 = 00011110 & 00001000 = 00001000
30 & 16 = 00011110 & 00010000 = 00010000

用户、角色、权限管理-设计方案之权限检测相关推荐

  1. Windows用户与组管理、NTFS权限、文件共享

    用户与组管理.NTFS权限 一.用户与组管理 用户 SID 本地用户默认有内置账户: 查看用户管理:计算机右键管理 Windows用户与组管理的操作练习 二.NTFS权限: 三.文件共享服务器 隐藏共 ...

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

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

  3. java 二进制 归属权限_【Java EE 学习 75 上】【数据采集系统第七天】【二进制运算实现权限管理】【权限分析和设计】...

    一.权限计算相关分析 1.如何存储权限 首先说一下权限保存的问题,一个系统中最多有多少权限呢?一个大的系统中可能有成百上千个权限需要管理.怎么保存这么多的权限?首先,我们使用一个数字中的一位保存一种权 ...

  4. linux查询默认权限命令,Linux权限管理之基本权限

    Linux权限管理之基本权限 1.文件权限: -rw-r--r-- :         r 读   w 写     x 执行 -:   文件类型(- 文件  d 目录  l软链接文件)rw- r-- ...

  5. JAVAWEB开发之权限管理(一)——权限管理详解(权限管理原理以及方案)、不使用权限框架的原始授权方式详解

    知识清单 1.了解基于资源的权限管理方式 2. 掌握权限数据模型 3. 掌握基于url的权限管理(不使用Shiro权限框架的情况下实现权限管理) 4. shiro实现用户认证 5. shiro实现用户 ...

  6. Android权限管理之Permission权限机制及使用

    前言: 最近突然喜欢上一句诗:"宠辱不惊,看庭前花开花落:去留无意,望天空云卷云舒." 哈哈~,这个和今天的主题无关,最近只要不学习总觉得生活中少了点什么,所以想着围绕着最近面试过 ...

  7. Yii2.0 后台UI框架以及权限管理扩展实现权限菜单管理

    Yii2.0 后台UI框架以及权限管理扩展实现权限菜单管理 一.安装后台框架ui 二.安装权限管理扩展 三.实现权限菜单管理 一.安装后台框架ui composer require dmstr/yii ...

  8. oracle 权限控制表,Oracle 用户权限管理与常用权限数据字典列表

    用户权限管理 Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级.Role 角色级.这些权限可以授予给用户.特殊 ...

  9. cognos java用户权限_Cognos 权限管理之第三方目录管理员器、报表服务器权限管理、FrameWork权限管理等详细配置 【39页深度好文图文并茂带你全面了解Cognos权限管理】...

    一.引言 1.1. 编写目的 本文档是结合以往的开发经验,从实际报表开发出发,详细介绍了ReportNet报表设计流程.开发技巧,报表性能调优.FM建模规范及技巧讲解.总结的文档希望对大家在日后的开发 ...

  10. linux限制组访问权限,linux用户和组管理以及文件权限访问控制ACL策略

    01.通配符 文件通配符可以用来匹配符合条件的多个文件,方便批量管理文件. 通配符采用特定的符号,表示特定的含义,此符号称为元 meta 字符. 常见的通配符如下: * 匹配零个或多个字符,但不匹配 ...

最新文章

  1. STM32普通定时器(TIM2-7)的时钟源
  2. 测试工具 - Postman接口测试入门使用手册,Postman如何进行数据关联、自动更新cookies、简单编程
  3. linux glibc 编译安装,glibc的安装编译
  4. web安全----XSS漏洞之基本原理
  5. 一根绳子从一头烧需30时分钟_小学生一分钟跳绳满分训练指南
  6. LINQ to SQL语句 收藏系列
  7. 1.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 基础知识点概述
  8. C++中acculumate函数使用
  9. Oracle USE_LARGE_PAGES初始化参数
  10. 通过共享文件夹来进行前后端独立开发
  11. 关于学校软件安装错误:“an error ocurred installing TAP device”的个人解决办法
  12. 五个金念什么_5个火读什么???还有5个水 5个木 5个土 5个金
  13. n皇后问题-c语言实现
  14. kafka彻底删除topic清理数据
  15. bib config_配置config.bib的注意事项以及错误分析——自己都要顶!
  16. js控制禁用退格键回到上一个页面
  17. ftp的20 21端口和主动被动模式
  18. 不要掉进PHP数组合并的坑。(初学者须知道)
  19. Cesium:绘制抛物线/散射线
  20. 重庆市涪陵创新计算机学校图片,重庆市涪陵创新计算机学校寝室图片、学校环境好吗...

热门文章

  1. 层级 z-index 透明opacity
  2. 韩顺平的java入门到精通中serversql笔记(包括emp表和dept表,linux的mysql版)
  3. java 利用同步工具类控制线程
  4. 20150109--面向对象+对象传值-01
  5. MethodFilterInterceptor(方法拦截器)配置excludeMethors
  6. 个利用正则表达式解析单句SQL的类SqlParser
  7. flume学习(二):flume将log4j日志数据写入到hdfs
  8. SDN第六次上机作业
  9. Qt数据库集成应用封装
  10. swift开发网络篇—NSURLConnection基本使用