java 位运算 权限控制_java 位运算权限管控(转载)

这里笔者介绍一种很常用,也比较专业的权限控制思路。这里用java语言描述,其实都差不多的。要换成其他的语言主,自己转一下就可以了。为了方便起见,我们这里定义a^b为:a的b次方。这里,我们为每一个操作设定一个唯一的整数值,比如:

删除A---0

修改A---1

添加A---2

删除B---3

修改B---4

添加B---5

……

理论上可以有N个操作,这取决于你用于储存用户权限值的数据类型了。

这样,如果用户有权限:添加A---2;删除B---3;修改B---4。那用户的权限值 purview

=2^2+2^3+2^4=28,也就是2的权的和了。化成二进制可以表示为11100。这样,如果要验证用户是否有删除B的权限,就可以通过位与运算来

实现。在Java里,位与运算运算符号为&,即是:

int value = purview &((int)Math.pow(2,3));

你会发现,当用户有操作权限时,运算出来的结果都会等于这个操作需要的权限值!

原理:

位与运算,顾名思义就是对位进行与运算:

以上面的式子为例:purview & 2^3 也就是 28&8

将它们化成二进制有

11100

& 01000

——————-

01000 == 8(十进制) == 2^3

同理,如果要验证是否有删除A---0的权限

可以用:purview &((int)Math.pow(2,0));

即:

11100

& 00001

————————

00000 == 0(十进制)  != 2^0

这种算法的一个优点是速度快。可以同时处理N个权限。如果想验证是否同时有删除A---0和删除B---3的权限,可以用purview&(2^0+2^3)==(2^0+2^3)?true:false;设置多角色用户。根据权限值判断用户的角色。

下面提供一个java的单操作权限判断的代码:

//userPurview是用户具有的总权限

//optPurview是一个操作要求的权限为一个整数(没有经过权的!)

public static boolean checkPower(int userPurview, int optPurview)

{

int purviewValue = (int)Math.pow(2, optPurview);

return (userPurview & purviewValue) == purviewValue;

}

当然,多权限的验证只要扩展一下就可以了。

几点注意事项:首先,一个系统可能有很多的操作,因此,请建立数据字典,以便查阅,修改时使用。其次,如果用数据库储存用户权限,请注意数值的有效范围。操作权限值请用唯一的整数!

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

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

相关文章

优酷视频如何将地区设置为中国大陆

播放器软件很多,本文小编给大家推荐优酷视频,本文继续分享“优酷视频如何将地区设置为中国大陆”。优酷视频放器是优酷视频旗下的视频客户端产品,支持丰富内容的在线点播及电视台直播。作为国内首家,全力打造正版视频平台的优酷视…

java相遇问题_两车追及或相遇问题(hdu1275)数学题

两车追及或相遇问题Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 902 Accepted Submission(s):259Problem Description外号叫“猪头三”的小学生在数学课上,经常遇到两车相遇或追及的方程题,…

腾讯视频如何编辑自我介绍

小编继续给大家推荐腾讯视频这款非常好用的播放器软件,文章主要围绕“腾讯视频如何编辑自我介绍”分享,大家可以阅读一下。播放器家园网提供了腾讯视频播放器官方最新版下载,快来下载体验,本站提供的所有软件都是官方链接直接下载…

java常用class类_java常用类

java常用类内部类1.成员内部类:在一个类的内部定义一个完整的类例如:外部类public class Body{内部类class Header{}}内部类可以直接访问外部类的私有成员,而且不破坏封装内部类可以为外部类提供必要的功能组件,成员内部类 在类的…

优酷视频怎么转二维码_优酷视频转二维码

有的人想将自己制作的视频分享出去,那么该如何将视频转换成二维码来分享呢?其实方法很简单,直接在视频界面中就能生成,这里和大家讲讲。 01、 登录自己的优酷帐号,然后点击右上角的上传按钮。 优酷视频怎么转二维码_优酷视频转…

mysql 分类计数器_PHP MySQL映像计数器

我是PHP新手,一直在研究计数器.计数器很好用,但是现在我想将数字转换成图像.我创建了12张图片0-9,一个空格和一个逗号图片.我在上下搜索,以获取将数字格式转换为图像所需的提示,但没有成功.到目前为止,我所发现的就是如何仅使用文件PHP / MySQL来建立基本的计数器,以及如何使用…

腾讯视频如何设置定时关闭

这篇文章主要说的是腾讯视频下载不了_腾讯视频如何设置定时关闭,希望可以帮助大家。播放器家园网提供了腾讯视频播放器官方最新版下载,快来下载体验,本站提供的所有软件都是官方链接直接下载,没有任何二次封装,没有包含…

java中字典算法_Java字典生成算法讲解

在实际应用中,大家使用的密码可以说多种多样,但是无论有多少,其组成不遑是有可打印字符组成的,我们可以认为class CreateDic{private int BitNum;private String Str;public void SetBitNum(int num){BitNumnum;}public void SetS…

优酷视频如何在手机进行安全设置?

你好,假如您要想拆换优酷手机绑定手机上/登陆密码,您能够按下列方式开展实际操作: 1、打开手机优酷app,点一下【我的】-【我的在线客服】: 优酷视频如何在手机进行安全设置? 2、点一下【我的在线客服】挑…

java访问同一个变量_java – 从另一个类访问变量

很简单的问题,但我不能这样做。我有3个班:DrawCircle类import java.awt.*;import java.awt.event.*;import javax.swing.*;class DrawCircle extends JPanel{private int w, h, di, diBig, diSmall, maxRad, xSq, ySq, xPoint, yPoint;public DrawFrame …

360浏览器怎么关闭全屏看大图提示条

核心提示: 当我们用360安全浏览器查看含有多张大图的页面时,会显示全屏看大图提示条。其实很多时候我们都用不着这个功能,那么,360安全浏览器怎么关闭全屏看大图提示条呢?下面让我来给大家介绍下吧。 360浏览器怎么关闭全屏看大…

java xml约束_[Java教程]XML约束

[Java教程]XML约束0 2016-11-09 07:00:53DTD约束1)导入dtd方式内部导入]>外部导入本地文件系统:SYSTEM"note.dtd">公共的外部导入:PUBLIC "http://gz.itcast.cn/itcast.dtd">2)DTD语法约束标签或 类别:空标签&a…

为什么腾讯视频下载不了_腾讯视频如何设置背景

使用腾讯视频播放器,你可以享受到高清的画质以及丰富的会员服务,体会到无与伦比的观影体验!腾讯视频的主界面资源分类最广,为用户提供最新、最热的电影、电视剧、综艺、动漫、体育等视频节目。腾讯视频播放器采用了智能的P2P流媒体播放技术&a…

搜狐视频怎么修改昵称

今天小编给广大用户分享搜狐视频怎么修改昵称。搜狐视频播放器软件可24小时多平台无缝应用体验以及快捷分享,快速登陆等满足用户在线观影需求。搜狐视频播放器的在线视频媒体平台及视频播放器采用的是p2p媒体播放技术,可同时确保超多人同时在线观影还可享…

cv2 imwrite中文路径_python3下使用cv2.imwrite存储带有中文路径图片的方法

是陈妍希的Clueless Boyopencv中使用imwrite保存图片,选择中文文件夹作为有人知道在中文路径下保存图片怎么实现么。。python opencv如何存图片到指定路径?按图上的会存,修改倒数第四行的内容为: cv2.imwrite(F:/xxx/yyy/ str(c)…

搜狐视频怎么更改头像

本文播放器家园网小编给大家分享搜狐视频怎么更改头像,如果大家在使用搜狐视频过程当中遇到类似问题,欢迎阅读本文!搜狐视频具有很强的防火墙穿透能力,搜狐视频为用户在任何网络环境下收看流畅的视频节目提供了有力保障,而且所有流…

php 位运算与权限,PHP中的二进制位运算和权限存储

在很多系统的权限/选项设置中 很多都用到了位运算的方法来存储多种标志位。这样可以节省字段。一个字段只需要一个数字 就可以标识很多种设置和信息。举例 dicuz的帖子表的status字段,官方预留了16个标志位(0x0000 – 0xFFFF) 即216目前规划使用了只有8个标志位&…

腾讯视频app下载2019_腾讯视频主设备如何设置

很多人都使用腾讯视频,播放器家园网小编给大家分享一下腾讯视频app下载2019_腾讯视频主设备如何设置相关内容。腾讯视频的主界面资源分类最广,为用户提供最新、最热的电影、电视剧、综艺、动漫、体育等视频节目。腾讯视频播放器采用了智能的P2P流媒体播放…

php上传图片管理系统,php 登录操作的文件上传管理系统

[导读]本文章来给各位同学介绍一个不错的需要登录的php文件上传管理系统,功能简单有需要了解的同学可参考。 代码如下复制代码 本文章来给各位同学介绍一个不错的需要登录的php文件上传管理系统,功能简单有需要了解的同学可参考。代码如下复制代码$admin…

手机pptv如何切换视频和音频

很多人都使用pptv播放器,播放器家园网小编给大家分享一下手机pptv如何切换视频和音频相关内容。pptv播放器是pptv播放器旗下一款高清视频客户端,pptv播放器可提供高清海量影视视频在线观看和下载海量正版高清-影视资源,可供用户飞速离线观看&…