二次幂权限设计

设置含有的权限如增删改查减为1,2,4,8,16

如果A包含增删改这5个权限,那A的值为1+2+4=7

如果B包含增改查这5个权限,那A的值为1+4+8=13

如果C包含增删改查减这5个权限,那A的值为1+2+4+8+16=31

7二进制为111,13的二进制为1101,31二进制为11111

1二进制为1,2二进制为10,4二进制为100,8二进制为1000,16二进制为10000,

可以得出:

7&1=1,7&2=2,7&4=4,7&8=0,7&16=0

13&1=1,13&2=0,13&4=4,13&,8=8,13&16=0

13&1=1,13&2=2,13&4=4,13&,8=8,13&16=16

假设一个用户U有角色A,角色A的权限值为7,用7循环与2的N次方相与,值大于0表示有该权限

假设一个用户U有角色B,角色A的权限值为13,用13循环与2的N次方相与,值大于0表示有该权限

这样就可以查出U所包含的所有权限,这个时候没有一级菜单和二级菜单之分

 

如果一个用户有多个角色,一个角色有一级菜单权限和部分二级菜单权限,数据库应该怎么设计呢?

那么在角色表里面需要配置一个一级级菜单的值(如新增用户1,修改用户为2,删除用户为3),配一个二级菜单的总值(如7,13,31),然后在权限值表里面配置二级菜单的值(如增删改查减为1,2,4,8,16)以及对应的一级菜单的值(如新增用户1,修改用户为2,删除用户为3)

角色表字段

角色   父菜单值  二级菜单总值

A        1           7

A        2           13    

B        2           31

权限表字段

父菜单  二级菜单值

1            1

1            2

1            4

1            8

2            1

2            4

3            8

3            16

 

转载于:https://www.cnblogs.com/JAYIT/p/7833628.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/247105.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最好用的koa2+mysql的RESTful API脚手架,mvc架构,支持node调试,pm2部署。

#基于webpack构建的 Koa2 restful API 服务器脚手架这是一个基于 Koa2 的轻量级 RESTful API Server 脚手架,支持 ES6, 支持使用TypeScript编写。GIT地址:https://github.com/Allenzihan/koa2-mysql-framework.git此脚手架只安装了一些配合koa2使用的必要…

使用putty在linux主机和windows主机之间拷贝文件(已测试可执行)

转载于,请点击 首先下载putty,putty下载地址zip, 解压zip发现里面有plink.exe pscp.exe psftp.exe putty.exe puttygen.exe puttytel.exe等可执行文件,如果只是想要链接主机做一些操作那么使用putty.exe,要想要上传 …

博客园在升级的路上,不妨更自信些,同时说说我们可以为博客园做些什么

最近,博客园在技术升级上做了积极向上的努力,虽然中间过程出现反复,但姑且先不论最终升级后客户体验方面的提升,在升级过程中探索排查问题和解决问题的过程,本身就能帮助博客园团队和广大用户积累经验和提升能力&#…

iOS中持久化存储SQLite(一)

在iOS中做持久化存储有多种方案,其中包括plist, preference, sqlite, core data,其中: (1)plist, preference适合小型数据存储,因为每次存储前都必须将文件内容读到内存中,因此如果数据量过大就会占用大量…

多进程相关内容

多进程相关内容 multiprocessing模块与process类 multiprocessing python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程。Python提供了multiprocessing。…

iOS中SQLite持久化存储第三方库FMDB

interface HMShopTool : NSObject (NSArray *)shops; (void)addShop:(HMShop *)shop; end implementation HMShopTool static FMDatabase *_db; (void)initialize { // 1.打开数据库 NSString *path [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, N…

python超神之路:python异常对照表

python异常对照表 异常名称描述BaseException所有异常的基类SystemExit解释器请求退出KeyboardInterrupt用户中断执行(通常是输入^C)Exception常规错误的基类StopIteration迭代器没有更多的值GeneratorExit生成器(generator)发生异常来通知退出StandardError所有的内建标准异常…

python超神之路:创建对象的9种方法

python生成对象的9种方法 class Point:def __init__(self,x,y):self.x xself.y y import sys import copy import typespoint1 Point(1,2) point2 eval("{}({},{})".format("Point",1,2)) point3 globals()[Point](1,2) point4 locals()["Point…

面向接口的编程

面向接口的编程,将接口与实现分离,可以极大的降低代码的耦合,比如在编程中使用的加密接口,如果将具体的加密算法写入到使用加密的地方,这样就会导致,下一次加密方法发生改变的时候会导致大量的地方需要修改…

ASP.NET Core Web 应用程序系列(三)- 在ASP.NET Core中使用Autofac替换自带DI进行构造函数和属性的批量依赖注入(MVC当中应用)...

在上一章中主要和大家分享了在ASP.NET Core中如何使用Autofac替换自带DI进行构造函数的批量依赖注入,本章将和大家继续分享如何使之能够同时支持属性的批量依赖注入。 约定: 1、仓储层接口都以“I”开头,以“Repository”结尾。仓储层实现都以…

可视化caffe模型结构及在线可视化

在线可视化caffe模型结构 http://ethereon.github.io/netscope/#/editor 假设Caffe的目录是$(CAFFE_ROOT) 1.编译caffe的python接口 $ make pycaffe 2.装各种依赖 $ pip install pydot $ sudo apt-get install graphviz 3.可视化模型 draw_net.py执行的时候带三个参数 …

布式缓存系统Memcached简介与实践

缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载。缓存是解决这个问题的好办法。但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵活。此时Memcached或许是你想要的。Memca…

仿百度翻页(转)

https://www.cnblogs.com/fozero/p/9874334.html 转载于:https://www.cnblogs.com/hj0711/p/11390203.html

matlab 多核并行编程

在使用matlab处理大数据,编程需要注意两个问题:并行运算和释放内存。matlab也提供了并行计算的功能,甚至能用GPU加速。并行计算工具箱,叫做parallel computing toolbox.它的使用方法,可以从matlab的帮助获得。 Parall…

iOS核心动画之CALayer(1)

本文目录 一、什么是CALayer二、CALayer的简单使用 回到顶部一、什么是CALayer * 在iOS系统中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView。 * 其实UIView之所以能显…

ASP.NET Core Web 应用程序系列(四)- ASP.NET Core 异步编程之async await

PS:异步编程的本质就是新开任务线程来处理。 约定:异步的方法名均以Async结尾。 实际上呢,异步编程就是通过Task.Run()来实现的。 了解线程的人都知道,新开一个线程来处理事务这个很常见,但是在以往是没办法接收线程里…

iOS核心动画之CALayer-layer的创建

本文目录 一、添加一个简单的图层二、添加一个显示图片的图层三、为什么CALayer中使用CGColorRef和CGImageRef这2种数据类型,而不用UIColor和UIImage?四、UIView和CALayer的选择五、UIView和CALayer的其他关系 * 上一讲已经说过,UIView内部默…

iOS核心动画之CALayer-隐式动画

本文目录 一、隐式动画属性二、position和anchorPoint 回到顶部一、隐式动画属性 * 在前面几讲中已经提到,每一个UIView内部都默认关联着一个CALayer,我们可用称这个Layer为Root Layer(根层)。所有的非Root Layer,也就…

多进程补充

多进程补充 僵尸进程和孤儿进程 基于unix环境(linux,macOS) 主进程需要等待子进程结束之后,主进程才结束 主进程时刻监测子进程的运行状态,当子进程结束之后,一段时间之内,将子进程进行回收.为什么主进程不在子进程结束后马上对其回收呢? 主进程与子进程是异步关系.主进程无法…

iOS核心动画之CALayer-自定义层

本文目录 一、自定义层的方法1二、自定义层的方法2 三、其他 自定义层,其实就是在层上绘图,一共有2种方法,下面详细介绍一下。 回到顶部一、自定义层的方法1 方法描述:创建一个CALayer的子类,然后覆盖drawInContext:方…