问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

C# 做个用户权限管理,分五种权限。

发布网友 发布时间:2022-04-29 19:21

我来回答

4个回答

热心网友 时间:2022-06-20 17:53

用位操作 按位与 &
二进制
权限1 是 00001
权限2 是 00010
权限3 是 00100
权限4 是 01000
权限5 是 10000
第二和第三种权限的话那就存2的二次方加2的三次方的和(4+8=12) 是 00110
如:
有第一种权限 select * from 权限表 where 权限值&1=1
有第一种和第二种权限 select * from 权限表 where 权限值&3=3 注:3=1+2
有第三种权限 select * from 权限表 where 权限值&4=4
你自己研究一下就可以搞定
我测试成功了追问我存在数年库的是int型啊,十进制形式的,不是二进制。有第二和第三种权限的话那就存数字12而已。

热心网友 时间:2022-06-20 17:53

你这个是典型的二进制数。每一位的1或0代表一个布尔值。
如你的题,第一种用2表示,就是10
第二种4表示,也就是100
一次类推。
如果在SQL中存的是Int,默认是十进制的表示形式。
我第一个想到的办法是创建一个自定义函数(如下)。这个是十进制数转换为二进制数的字符串形式,然后用LIKE去比较。

但是INT转字符串再比较肯定是比较损耗资源的。
据说SQL也有位运算。
&就是按位与。
……本机没装SQL,也没办法帮你测试……

附上int转二进制字符串:
Create FUNCTION DecToBin(@Dec Int)
RETURNS VARCHAR(16)
AS
begin
declare @BinStr as varchar(20)
declare @Mod2 as int
declare @Div2 as int

set @Div2 = @Dec / 2
set @Mod2 = @Dec % 2
set @BinStr=''

while @Div2<>0
begin
if @Mod2=0
set @BinStr = @BinStr + '0'
else
set @BinStr = @BinStr + '1'

set @Dec = @Dec / 2
set @Div2 = @Dec / 2
set @Mod2 = @Dec % 2
end

set @BinStr = @BinStr + '1'

return REVERSE(@BinStr + right('0000000000000000',16-len(@BinStr)))
end追问我是要取数据呀(取所有拥有权限二的用户存到dataset里就行了)。你把十进制转二进制是来干什么的?我数据库用户表里的权限那个字段存的是int型存的是十进制。你意思是把所有数据都取出来,再把权限这字段转成二进制的字符串,再按位与?得到符合的结果再存到dataset里吗?我的理解是这样!!

热心网友 时间:2022-06-20 17:53

SQL就实现很复杂,当然不排除有数学上的办法,但个人不记得了
所以给出程序中判断方法:
在C#通过数据库取出权限值后(假设赋值于a)
for(int i=5;i>=1;i--) //循环5-1判断是否有5-1权限
{
if(a-2^i>=0) //不为负则一定有i权限,数学方法,易证
{
有权限i; //是全部记录后在做判断(通用性强),或是到i==2时就选中(符合你的题意)
a-=2^i;
}
else
{
无权限i;
}
}
希望能帮到你

热心网友 时间:2022-06-20 17:54

我不太确定这种加法和与或的关系,不过你可以验证一下,把你的权限跟0x10与或一下,如果结果是2,证明含有第一个权限。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
初二选辅导书,新教材完全解读、中学教材全解和点拨哪个好 ...N系,还有三星、索尼、飞利浦,哪个MP3的音质最好 白本的近义词 白铜怎么造句 cc sc区别 ...都是怎么保存的?为什么越久越香,还不会变质? 我和女孩认识将近20天了,女孩只让我拉手,但得不到别的进展,求助? 对女的再怎么欲擒故纵,她也仍旧泰然自若,为什么?不爱还是心里强大? 女人只要沉住_,就_有什_你得不到的 如何关掉电脑低音炮 域用户如何提升其权限 广东用户管理权限的常见问题及解决办法 windows权限的管理原则 出租车交强险价格表 请问天津市出租车的交强险全额是多少? 苹果xs max玩王者荣耀要怎么设置才不卡 iPhoneXsmax打王者荣耀会弹出QQ消息吗? iPhone XS Max能不能玩游戏时候开小窗口聊天? iphone xs max有游戏模式吗玩吃鸡的时候被弹微信语音自动拒绝吗对方会显示什么. 苹果xsmax游戏不断网怎么设置? 苹果XsMax如何打卡游戏模式? 苹果xsmax玩游戏来电话被弹出去怎么办 银行卡怎么会限额 雅兰仕k700怎么样 移动wifi路由器怎么用? 惠普 beats 15 怎么进入 BIOS设置U盘启动项 U盘启动项哪里是灰色 excel里下行箭头不会换行怎么办 移动宽带能装无线路由器吗 我家里刚装了移动宽带,没电脑→_→想要有wifi该买什么路由器好呢?价格多少?买了怎么改wifi的 蓝牙音响可以放u盘 APP的架构,是基于什么原则,在进行调整 狂暴巨兽1080百度网盘~ 软件开发的架构设计指的是什么? 怎样修改电脑为超级用户权限 《狂暴巨兽》何时上映? 在电影狂暴巨兽中,三个动物是哪几个 现实究竟有能够像《狂暴巨兽》里的乔治一样能用手语交流的大猩猩吗? 求一部巨石强森演的电影,里面有一个山一样高的大猩猩,在水里走过去了,不是《狂暴巨兽》。 电脑显示屏50.8厘米,多少寸 怎样做可以瘦手臂? 请问oracle的共享操作模式和专用操作模式的工作过程是怎样的呢? 怎么锻炼瘦手臂快?什么运动锻炼手臂简单方便? 如何瘦手臂 15分钟运动帮你摆脱粗臂 做哪些运动可以起到瘦手臂的作用? 微信聊天记录怎么批量转发 微信聊天记录批量转发方法流程 微信名片上的号码是错误的,怎样取消? 怎么塑造细胳膊 7种手臂运动方法来瘦手臂 华为手机微信名片上电话按呼叫打不出是什么情况? 异氰酸酯的化学反应 异氰酸酯可与乙醇反应吗
  • 焦点

最新推荐

猜你喜欢

热门推荐