博克上有人问我:
问个技术上的问题,你指定的角色是对能操作的行为而言,但如果权限也涉及数据怎么办?
比如上面,若干个管理员,高虹水厂,东蓝科技,如果这个管理员只能操作高虹水厂的数据,
那个管理员只能操作东蓝科技的数据,在你的框架下怎么支持?
当然也许这个例子不太好,一般来说,高虹水厂和东蓝科技的数据不会混合的,但你应该明
白我上面的意思。
这个问题是属于, 数据集权限,也叫记录级权限的范畴,以下文章主要围绕上面的提问开展。
有人说:吉日你的权限太复杂。
我回答:判断一个权限,只需要一行代码,还不行吗?难道
非要孙悟空式的神奇方法?才可以满足你的要求?你又想简单,又要有足够的2次开发潜力,
又要调用方便,那我1行代码,你还嫌弃复杂吗?那我再怎么简化才能达到你的要求呢?
this.btnUserAdd.Enabled = this.IsAuthorized("User.Add");
有人说:吉日你的权限太全太庞大了。
我回答:我也不想做这么庞大,但是各种需求你需要满足,例如有些时候希望直接对用户设置
权限,有时希望通过角色设置权限,那这要看你的软件为了满足通用性,都需要有这些功能,
并且对将来的扩展,商业逻辑的变化还需要有个余地吧,你今天是这么想的,说不定明天看别人
那么用,你自己的想法也会变的。你就当其他几个你不用的功能不存在,可以设置隐藏模块就可以了。
有人说:吉日你的权限是C/S的,我们要B/S的。
我回答:现在C/S的工具很多,很多代码生成器都是C/S的,QQ、MSN也都是C/S的,甚至
我们的天天在用的开发软件用的VS开发环境也是C/S的,数据库系统也是C/S的,我这个工具
虽然是C/S的,但是都提供了B/S的调用接口,你可以怎么调用都可以,还有你要B/S的也可以,
你给多少钱?很简单的问题,毕竟不是人人都需要后台管理,也不需要天天后台管理,所以C/S的
也没什么的,而且我这个C/S的又支持WebService、Remoting、WCF运行模式的,架构非常灵活。
你觉得什么样的程序是好程序?我想经得起折腾得程序是最好的程序,你想怎么折腾,我都能奉陪到
底,我都能经得起折腾,你需求有变化,我程序不用变,就算程序变了数据库结构也不变,那实在不
行才变数据库结构,而且数据库结构变了我的程序还是很健壮,很快就可以适应,不会因为你需求经
常变了,程序就瘫软了,我的程序又可以满足你最简单的需求,也能满足你最复杂的需求,最起码有
2次开发的可能,可以满足你复杂的架构,甚至一个程序分布在多个数据库上的架构。
废话不说了,我们进入主题:
1。首先我们需要在定义这个权限时,告诉系统,“系统管理”这个权限是数据集权限。
2。数据集权限,我们主要分如下图
3。可以给吉日嘎拉这个用户配置“系统管理”权限的数据集范围,例如,他只能管理自己所在的部门。
4。我们给这个用户设置可以管理某些部门,还有可以管理某些角色,当然也可以设置到可以管哪些用户为止。
5。运行我们的程序,可以获得,吉日嘎拉这个用户,可以管理那些组织机构、管理那些角色,管理那些用户。
可以通过3种方式获得数据,在自己的程序里进行过滤数据用。
A:可以获得能管理的数组权限范围是什么,例如全公司的?自己部门的?自己工作组的?
B:可以获得能管理的String[] organizeIDs等数组,可以自己进行2次开发。
C:可以获得能管理的子查询SQL语句,可以在自己的程序里调用,可以自己进行2次开发。
例如,你用了我的权限组件,但是用户数据与您的业务数据不在同一个表里,那就无法直接执行SQL语句,
需要通过调用相应的方法,获得 String[] organizeIDs 等,然后经过处理,再你的SQL语句里进行数
据过滤,例如数据都在同一个数据库里,那又觉得获得 String[] organizeIDs 等麻烦,效率也不高,那
我可以给你提供过滤数据用的子SQL语句,你可以在你的SQL语句里拼接,然后过滤数据,例如你的数据
集的过滤数据要求很低,那你可以直接调用函数获得当前用户的某个权限范围的PermissionScope就可以了。
6。数据集权限的样例源码如下:
![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
2
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
3
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
4
![](https://i-blog.csdnimg.cn/blog_migrate/4fd96b3cf02f4c7b5c8964ac8167f7af.gif)
5
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
6
![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
7
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
8
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
9
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
10
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
11
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
12
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
13
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
14
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
15
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
16
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
17
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
18
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
19
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
20
![](https://i-blog.csdnimg.cn/blog_migrate/4fd96b3cf02f4c7b5c8964ac8167f7af.gif)
21
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
22
![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
23
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
24
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
25
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
26
![](https://i-blog.csdnimg.cn/blog_migrate/4fd96b3cf02f4c7b5c8964ac8167f7af.gif)
27
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
28
![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
29
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
30
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
31
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
32
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
33
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
34
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
35
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
36
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
37
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
38
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
39
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
40
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
41
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
42
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
43
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
44
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
45
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
46
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
47
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
48
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
49
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
50
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
51
![](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
52
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
53
![](https://i-blog.csdnimg.cn/blog_migrate/eec4c0236afc26744c9c4e910bc34958.gif)
54
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
55
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
56
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
57
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
58
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
59
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
60
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
61
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
62
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
63
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
64
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
65
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
66
![](https://i-blog.csdnimg.cn/blog_migrate/4fd96b3cf02f4c7b5c8964ac8167f7af.gif)
程序源码及数据库下载:
下载相应的数据库点这里:/Files/jirigala/DotNet.Common_DB.rar
下载相应的演示程序源码,请堤点这里:/Files/jirigala/JiriSoft.Permission.rar
导读:
通过命名空间的细微差别,很直白的讲个人的那么点儿小算盘、个人的小利益与公司的大利益
疯狂.NET架构通用权限后台管理工具演示版2.0下载
通用权限实现的核心设计思想
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 如何控制用户显示的菜单权限
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 在页面中的调用权限讲解
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 数据集权限的调用权限讲解
淘宝店地址:
http://list.taobao.com/browse/0/n-8ddf3d8a90550373fa749337efe29f03---------------40--commend-0-all-0.htm