手机版

简单高效的权限设计实例 由SQL Server在ASP.NET实现

时间:2021-10-23 来源:互联网 编辑:宝哥软件园 浏览:

大多数系统都有接入系统。一般来说,它可以控制人们对某个无页面的访问;对某些字段和控件可见或不可见。gridview中的数据是否可以删除、添加或添加等。大多数人把权威看作一个子系统。但是这里我不想设计一个权限管理系统。线上设计方案太多了,可以说每个开发者对于开发权限管理系统都有自己的想法和思路。在本文中,我首先使用简单的C#代码来模拟用户的权限,然后使用sql来模拟它。这是一种简单、直观、高效的判断用户权限的方法。# C#:好了,让我们从最简单的开始,定义一个User类如下。复制的代码如下:类User { bool CanDeletebool CanReadbool CanWritebool可以修改;bool可以创建;}这里设计了五个属性来控制用户的权限。我发现这个虽然很直观,但是不适合扩展。我们将权限分开,看下面的代码:复制代码如下:枚举权限类型: int {none=0,read=1,write=2,modify=4,delete=8,create=16,All=Read | Write | Modify | Delete | Create }类User { public PermissionTypes Permissions=PermissionTypes。无;}我们先来试试,可以感受到其中的神奇:复制代码如下: //创建用户User admin=new User();管理员。权限=权限类型。读取|权限类型。写|权限类型。删除;//验证bool可以读取的权限=((权限类型. readadmin.permissions)==权限类型. read);bool canWrite=((PermissionTypes。写管理员。权限==PermissionTypes。写);bool canCreate=((PermissionTypes。创建管理员。权限==PermissionTypes。创建);//检查结果控制台。write line(canRead);//真正的控制台。WriteLine(canWrite);//真正的控制台。写线(canCreate);//false利用了两个操作:“|”和“”。但是,这看起来很尴尬,初始化和验证时使用了一长串“|”和“”操作码。这不是直觉。我在系统中扩展了一些方法。供您调用的枚举。代码如下。

复制代码代码如下: //是否存在权限公共静态bool HasT(这个系统。枚举类型,T值){ try { return((int)(object)type(int)(object)value)=(int)(object)value);} catch { return false} } //判断权限公共静态bool IsT(本系统。枚举类型,T值){ try { return(int)(object)type==(int)(object)值;} catch { return false} } //添加权限公共静态地址。枚举类型,T值){ try { return(T)(object)((int)(object))类型| (int)(对象)值));}捕获(例外情况){ 0抛出新的ArgumentException(字符串。格式('不能添加类型"{0}",类型为(T)10 .姓名),例如);} } //移除权限公共静态测试移除(本系统。枚举类型,T值){ try { return(T)(object)((int)(object)type ~(int)(object)value));}捕获(例外情况){ 0抛出新的ArgumentException(字符串。格式('不能移除类型"{0}",类型为(T)10 .姓名),例如);} } 使用一下:复制代码代码如下: //创建一个用户用户管理员=新用户();权限类型权限=新权限类型();管理员。权限=权限;//添加权限管理员。权限=管理员。权限。添加(权限类型。创建);管理员。权限=管理员。权限。添加(权限类型。阅读);管理员。权限=管理员。权限。添加(权限类型。写);//判断权限bool canRead=admin .权限。具有(权限类型。阅读);//true bool canWrite=admin .权限。具有(权限类型。写);//true bool canDelete=admin .权限。具有(权限类型。删除);//false bool canCreate=admin .权限。具有(权限类型。创建);//真正的控制台写行(canRead);//真正的控制台WriteLine(canWrite);//真正的控制台写行(canDelete);//假控制台.写线(可以创建);//真正的控制台read();SQL:大部分权限管理都是数据库的操作,好依照上面的思路,我在数据库里面模拟一下以上的操作,在结构化查询语言中与或运算是很高效的。先设计两张表用户和许可。

1、获取有阅读权限的所有用户:复制代码代码如下:从[用户]中选择*其中权限类型1=1结果:

2、获取有删除权限的所有用户:复制代码代码如下:从[用户]中选择*其中权限类型8=8结果:

3、判断麒麟是否有有删除权限复制代码代码如下:如果存在(从[用户]中选择*其中名称='齐林'和权限类型8=8)打印'真'否则打印'瓶'结果:瓶作者:朱祁林

版权声明:简单高效的权限设计实例 由SQL Server在ASP.NET实现是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。