C# 位运算权限管理

C# 位运算轻松实现权限操作 之前一直用菜单、角色、权限、按钮、用户等表来实现权限的控制,感觉很繁琐,最近群里面听说位运算 操作 权限很方便。所以就自己试着写了下,感觉Very Good,下面就C#的位运算做个笔记,分享给大家,欢迎提问题和建议! 在这之前写解释下什么事位运算,位运算就是按位进行 与(&)、或(|)、非(~)、或、异或二进制等运算。这里只用 与、或、非,其他就不解释了。网上很多! 1.首先,我们先声明一个枚 阅读详情

C#中使用位运算来实现权限管理2009-08-12 11:27摘要:本文向您讲解使用C#位运算来实现权限管理,在设计权限时, 把权限管理操作转换为C#位运算来处理。
标签:C#位运算 权限管理

常用的位运算主要有与(&), 或(|)和非(~), 比如:

1 & 0 = 0, 1 | 0 = 1, ~1 = 0

在设计权限时, 我们可以把权限管理操作转换为C#位运算来处理.

第一步, 先建立一个枚举表示所有的权限管理操作:

/// 测试代码
[Flags]
public enum Permissions
{
   Insert = 1,
    Delete = 2,
    Update = 4,
    Query = 8
}

[Flags]表示该枚举可以支持C#位运算, 而枚举的每一项值, 我们用2的n次方来赋值, 这样表示成二进制时刚好是1 = 0001, 2 = 0010, 4 = 0100, 8 = 1000等, 每一位表示一种权限, 1表示有该权限, 0表示没有.

接下来是权限的运算:

1. 权限的加法, 使用与运算来实现. 我们知道, 0001 | 0100 = 0101, 这样就表示同时具有第一位和第三位的权限管理了, 枚举表示为:

Permissions permissions = Permissions.Insert | Permissions.Update

2. 权限的减法, 使用与运算+非运算来实现, 如上面要去掉Insert权限, 操作为:

Permissions permissions &= ~Permissions.Insert即是 0101 & ~0001 = 0101 & 1110 = 0100

3. 权限的判断, 使用与运算, 当判断用一用户是否具有该操作权限时, 要把用户的的权限与操作权限进行与运算, 如果得到的结果仍是操作权限管理, 则表示用户具有该权限:

Permissions permissions = Permissions.Insert | Permissions.Update;

Assert.IsTrue((permissions & Permissions.Insert) == Permissions.Insert);
Assert.IsTrue((permissions & Permissions.Update) == Permissions.Update);
Assert.IsFalse((permissions & Permissions.Query) == Permissions.Query);

permissions &= ~Permissions.Delete;
Assert.IsFalse((permissions &= ~Permissions.Delete) == Permissions.Delete);

基于位运算的权限细粒度控制 NULL 博文链接:https://zuoming.iteye.com/blog/570757 立即下载

相关推荐

采用按位与(&)按位或(-)算法的简单权限实例

采用按位与(&)按位或(|)算法的简单权限实例,源代码

C#位运算处理权限问题介绍

常用的位运算主要有与(&), 或(|)和非(~), 比如:     1 & 0 = 0, 1 | 0 = 1, ~1 = 0     在设计权限时, 我们可以把权限管理操作转换为C#位运算来处理.     第一步, 先建立一个枚举表示所有的权限管理操作: [Flags]public enum Permissions{    Insert = 1,   Delete = 2,   Updat

流光如梦,程序人生 688

C#枚举中的位运算权限分配浅谈

常用的位运算主要有与(&), 或(|)和非(~), 比如: 1 & 0 = 0, 1 | 0 = 1, ~1 = 0 在设计权限时, 我们可以把权限管理操作转换为C#位运算来处理. 第一步, 先建立一个枚举表示所有的权限管理操作: 代码如下:[Flags] public enum Permissions { Insert = 1, Delete = 2, Update = 4, Query = 8 } [Flags]表示该枚举可以支持C#位运算, 而枚举的每一项值, 我们用2的n次方来赋值, 这样表示成二进制时刚好是1 = 0001, 2 = 0010, 4 = 0100, 8 = 1000等

C#中使用位运算来实现权限管理

C#中使用位运算来实现权限管理摘要:本文向您讲解使用C#位运算来实现权限管理,在设计权限时, 把权限管理操作转换为C#位运算来处理。标签:C#位运算 权限管理常用的位运算主要有与(&), 或(|)和非(~), 比如:1 & 0 = 0, 1 | 0 = 1, ~1 = 0在设计权限时, 我们可以把权限管理操作转换为C#位运算来处理.第一步, 先建立一个枚举表示所有的权限管理操作...

weixin_30254435的博客 175

浏览器Cookie迁移实战:从Chrome导出导入登录态全攻略

Cookie是浏览器保存的会话凭证,服务端通过Set-Cookie将登录态种在本地。迁移Cookie本质上是把服务端认可的会话标识搬到新环境,从而免去重复输入账号密码和二次验证的麻烦。在换电脑、切浏览器或重装系统时,掌握Cookie的导出导入技术能显著提升效率。Chrome与Edge同属Chromium内核,存储结构相似,但字段差异(如Domain、SameSite、Secure)常导致迁移失败。通过浏览器扩展或CDP脚本可实现跨浏览器登录态迁移,适用于内网后台、开发环境等场景。本文从原理到实践,梳理Coo

weixin_42533120的博客 341

MATLAB新手必看:5分钟搞定直流无刷电机Simulink仿真(附完整模型下载)

本文为MATLAB新手提供直流无刷电机Simulink仿真的快速入门指南,涵盖从环境配置到速度控制闭环实现的完整流程。通过详细的模块选择和参数设置说明,帮助读者5分钟内搭建基础仿真模型,并附赠完整模型下载,助力快速掌握电机控制仿真技术。

efc123456的博客 984

位运算 权限控制

enum e_Permission : byte { // Insert = 0b0001,//1 // Delete = 0b0010,//2 // Update = 0b0100,//4 // Select = 0b1000,//8 Insert = 1, Delete = 2, Update = 4, Select = 8, } class Permissions { public static byte Addpermissi

weixin_38673340的博客 451

Echats-wordcloud 文字云图的踩坑点【Unknown series wordCloud】

一直都是报 【ECharts Unknown series wordCloud】这玩意可能要刷脸,祝你好运吧~

Sky_Bug的博客 2418

C# 使用位运算来实现权限管理

常用的位运算主要有与(&), 或(|)和非(~), 比如: 1 & 0 = 0, 1 | 0 = 1, ~1 = 0 在设计权限时, 我们可以把权限操作转换为位运算来处理. 第一步, 先建立一个枚举表示所有的权限操作: [Flags] public enum Permissions { Insert = 1, Delete = 2,

CanieLau的专栏 1160

华三模拟器实战:3分钟搞定路由器DHCP地址池配置(附常见错误排查)

本文提供华三模拟器中路由器DHCP地址池的实战配置指南。通过分步详解,帮助用户在3分钟内完成基础设置,并深入讲解多地址池、中继配置等进阶应用。文章重点剖析了DHCP服务无法工作的常见原因,提供从客户端到服务器的系统性排错方法,助力快速定位并解决地址分配失败、获取参数错误等典型问题。

w1x2y3的博客 360

YOLOv13改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进

1️⃣ 已更新种不同的改进方案,专栏内的每篇文章皆,均可顺利运行。2️⃣ 订阅专栏即可进群获取以及从的各种答疑内容。3️⃣ 全新的YOLOv13改进专栏,,只为更好的满足论文发表的要求。专栏内容,专栏实时评分,全网最高,质量保证。🎫。。

Limiiiing的博客 9161

权限操作与位运算

PHP: 我这里说到的权限管理办法是一个普遍采用的方法,主要是使用到"位运行符"操作,& 位与运算符、| 位或运行符。参与运算的如果是10进制数,则会被转换至2进制数参与运算,然后计算结果会再转换为10进制数输出。 它的权限值是这样的 2^0=1,相应2进数为"0001"(在这里^我表示成"次方",即:2的0次方,下同) 2^1=2,相应2进数为"0010" 2^2=4,相应2进数为"0

喜欢在细雨中散步 6348

redhawk:Low Power Analysis

1.rush current与switch cell 在standby状态下为了控制leakage power我们选择power gating的设计方式,使用power switch cell关闭block/power domain的电源。 power switch的基本介绍可见: 低功耗设计-Power Switch power switch的table中有四种状态,对应block工作、待机和上电,下电。low power analysis主要分析上电的过程。 上电过程可以看做mos电容

m0_61544122的博客 3206

SQL位运算

为什么80%的码农都做不了架构师?>>> ...

weixin_34348111的博客 1327

JAVA:Spring Boot 集成 Baidu UID-Generator ID 生成器

百度UID-Generator是一款高性能分布式ID生成器,支持600万QPS,提供Snowflake扩展版和Cache模式两种实现方式。文章详细介绍了如何在Spring Boot项目中集成该组件,包括Maven依赖配置、MySQL表结构初始化、Spring Boot数据源配置、WorkerId分配策略实现以及UID生成器的核心配置。该方案具有无中心依赖、ID单调递增、支持集群部署等特点,适用于订单号、用户ID等分布式场景。通过缓存模式(Cache-Buffer)可进一步提升性能,满足高并发业务需求。

木头 487

LoRA 完整解析:从理论到实践

LoRA(低秩适应)是一种高效的大模型微调方法,通过添加少量可训练参数(低秩矩阵)来适配新任务,避免全参数微调的高成本。其核心是将权重更新ΔW分解为两个小矩阵B×A的乘积,大幅减少训练参数量(仅0.1-1%)。LoRA基于内在维度假设,通过低秩约束捕捉核心任务信息,兼具效率与效果。实际应用中,常用配置为秩r=16-32,目标模块选择注意力层的q_proj和v_proj,学习率比全参数微调大10倍(约1e-4)。优势包括参数高效(内存降低60-80%)、多任务适配灵活、保留预训练知识等,已成为大模型微调的主流

echo的博客 1412

(转)C#运用位运算进行权限管理

常用的位运算主要有与(&), 或(|)和非(~), 比如: 1 & 0 = 0, 1 | 0 = 1, ~1 = 0 在设计权限时, 我们可以把权限操作转换为位运算来处理. 第一步, 先建立一个枚举表示所有的权限操作: [Flags]public enum Permissions{ Insert = 1, Delete = 2, Update = 4...

weixin_30915951的博客 188

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

C#位运算

常用的位运算主要有与(&), 或(|)和非(~), 比如:1 & 0 = 0, 1 | 0 = 1, ~1 = 0在设计权限时, 我们可以把权限管理操作转换为C#位运算来处理.第一步, 先建立一个枚举表示所有的权限管理操作:[Flags]publicenumPermissions{ Insert=1, Delete=2, Update=4, Que...

weixin_30239339的博客 75

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

C# 枚举中的位运算

最近用枚举做一个权限控制,在移除某一个权限时一值都得不到解决(离散比较差),网上介绍也少,经过百般搜查,终于找到答案,现多写一份,以后来使用者更易查找。 原文:http://developer.51cto.com/art/200907/140950.htm 本文介绍C#位运算的处理方法,第一步, 先建立一个枚举表示所有的权限管理操作,接下来是权限的运算等。 常用的位运算主要有与...

weixin_30646315的博客 250

STM32CubeMX 6.14 下载安装与固件包管理全攻略

在嵌入式开发中,代码生成器与配置管理工具能大幅提升底层初始化效率。其核心原理是通过图形化界面配置芯片时钟、引脚和外设,自动生成 HAL 库初始化代码,从而降低手动查阅参考手册的复杂度。这类工具的技术价值在于将环境配置标准化,但依赖 Java 运行环境和独立的固件仓库,路径与权限问题常导致安装失败。典型应用场景包括学生实验、产品原型开发及从标准库迁移。STM32CubeMX 正是此类工具的代表,其 6.14 版本在固件包下载和仓库管理上仍有常见报错,如 cube firmware cannot be inst

weixin_33850015的博客 473

[转载] C#枚举中的位运算

本文介绍C#位运算的处理方法,第一步, 先建立一个枚举表示所有的权限管理操作,接下来是权限的运算等。   常用的位运算主要有与(&), 或(|)和非(~), 比如:   1 & 0 = 0, 1 | 0 = 1, ~1 = 0   在设计权限时, 我们可以把权限管理操作转换为C#位运算来处理.   第一步, 先建立一个枚举表示所有的权限管理操作:   [Flags]   publi...

weixin_30856965的博客 80

位运算权限管理

最近在做权限管理,突然想到了曾经指导过我的技术总监用过的一种办法,今天我也这样弄一下,下午遇到了点问题,但看了这个文章基本上就能解决了.   我的代码例子: /** * 验证是用户是否拥有该权限 * @param limit 用户权限 * @param action 模块权限 * @return true有权限,false没有权限 */ public st...

梁健的博客 294
上一篇: webservice 图片服务器
下一篇: 搜索的几种js时间控件
windcoldice
博客等级 码龄18年 1粉丝 11原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值