MyException - 我的异常网
当前位置:我的异常网» C# » 求救,C#权限管理分析到很细之后,不知道如何做了

求救,C#权限管理分析到很细之后,不知道如何做了

www.MyException.Cn  网友分享于:2013-02-24  浏览:31次
求救,C#权限管理分析到很细之后,不知道怎么做了。
做一个程序,准备完善一下权限管理。初期准备如下:
1.定义一个角色,(role)
2.定义用户。
每个用户获得不同的角色,以实现权限的分配,每个角色中有不同的功能(function)

如此一来,看似完美了,一,定义好功能,再定义好角色,再让用户获得这个角色(或一个角色组)
实际还存在一个问题,那就是。

客户的需求是千奇百怪的,比如,同样一个部门,假设是采购部,那么,其中有五位员工,假设叫   emp1,emp2...emp5

现在需求是这样的。

emp1...emp5   都要能够做其中的一项功能(采购入库)

但是,emp1只能做采购方是东北的单据。

emp2只能做采购金额 <   50000元的单据,

emp3可以做采购入库操作,但是,他不能保存采购入库单,他只是做着玩,因为他是实习生。

emp3   同时也只能做东北区的业务,连查其他区的都不可以,因为这个实习生只管东北的业务,上层认为他看了其他区的也没用,可能会泄露公司的机密。

emp4   可以查东北和华东地区的业务,但只能做华东地区的,因为他刚从东北区调过来,一些业务他还要查,以确定一些诸如退货和付款等后续事宜。

上面这些,我真不知道该设计在权限里还是业务逻辑里,因为有很多相似,交叉呀什么的。谁能给我说说,这样的东西到底怎么设计才是最好的?

------解决方案--------------------
你可以这样想一下啊!

有一些是页面权限(也就是说你只要有某种权限就可以点击入相应的功能页面)
而另外一些是属于对数据的访问权限了!你可以在用户表中添加相应列,是否实习生不就OK了!

是实习生我就只给你看,不给你做,或者是可以做多少钱以内的不就哦了!


我自己也做了个相似的权限管理!
------解决方案--------------------
这个是很复杂的,.net 大概的做法是这样,user 有自己的权限定义,这是优先级最高的,user 还从 roles 中继承一些权限。权限分为两种,allow 和 deny。不过弄到一块就很复杂了,我没做过,想一想就头疼。enterprise library 里有个和权限相关的应用程序块,可以分析字符串形式的权限表达式,你找来看看有没有帮助。
------解决方案--------------------
首先分析好权限的检查跟哪些因素有关,比如从你举的例子来说主要是采购操作的时候需要进行权限的检查,相关的因素有登录用户、采购单地区、金额、操作类型。
其中采购单地区、金额等应该都是包括在采购单的信息中的,可以称为采购对象。
那么采购权限检查的输入应该由用户、操作类型、采购对象组成。比如定义一个方法bool Check(User user, Operator op, Order order)。
这个方法内部的实现可能比较复杂,可以优先检查用户权限,然后检查用户所在组的权限。
------解决方案--------------------
再新增一个权限组不就OK了
------解决方案--------------------
upup

------解决方案--------------------
发现CSDN的发贴功能很垃圾。想发一片长一点的文章都有限制先BS一下CSDN!
前言:
权限往往是一个极其复杂的问题,但也可简单表述为这样的逻辑表达式:判断“Who对What(Which)进行How的操作”的逻辑表达式是否为真。针对不同的应用,需要根据项目的实际情况和具体架构,在维护性、灵活性、完整性等N多个方案之间比较权衡,选择符合的方案。
目标:
直观,因为系统最终会由最终用户来维护,权限分配的直观和容易理解,显得比较重要,系统不辞劳苦的实现了组的继承,除了功能的必须,更主要的就是因为它足够直观。
简单,包括概念数量上的简单和意义上的简单还有功能上的简单。想用一个权限系统解决所有的权限问题是不现实的。设计中将常常变化的“定制”特点比较强的部分判断为业务逻辑,而将常常相同的“通用”特点比较强的部分判断为权限逻辑就是基于这样的思路。
扩展,采用可继承在扩展上的困难。的Group概念在支持权限以组方式定义的同时有效避免了重定义时
现状:
对于在企业环境中的访问控制方法,一般有三种:
1.自主型访问控制方法。目前在我国的大多数的信息系统中的访问控制模块中基本是借助于自主型访问控制方法中的访问控制列表(ACLs)。
2.强制型访问控制方法。用于多层次安全级别的军事应用。
3.基于角色的访问控制方法(RBAC)。是目前公认的解决大型企业的统一资源访问控制的有效方法。其显著的两大特征是:1.减小授权管理的复杂性,降低管理开销。2.灵活地支持企业的安全策略,并对企业的变化有很大的伸缩性。
名词:
粗粒度:表示类别级,即仅考虑对象的类别(the type of object),不考虑对象的某个特
定实例。比如,用户管理中,创建、删除,对所有的用户都一视同仁,并不区分操作的具体对象实例。
细粒度:表示实例级,即需要考虑具体对象的实例(the instance of object),当然,细
粒度是在考虑粗粒度的对象类别之后才再考虑特定实例。比如,合同管理中,列表、删除,需要区分该合同实例是否为当前用户所创建。

------解决方案--------------------

------解决方案--------------------
mark
------解决方案--------------------
学习!
------解决方案--------------------
写的很好

文章评论

为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
如何成为一名黑客
如何成为一名黑客
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
代码女神横空出世
代码女神横空出世
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
程序员必看的十大电影
程序员必看的十大电影
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
为什么程序员都是夜猫子
为什么程序员都是夜猫子
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
我的丈夫是个程序员
我的丈夫是个程序员
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
编程语言是女人
编程语言是女人
一个程序员的时间管理
一个程序员的时间管理
程序员都该阅读的书
程序员都该阅读的书
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
那些争议最大的编程观点
那些争议最大的编程观点
程序员应该关注的一些事儿
程序员应该关注的一些事儿
我是如何打败拖延症的
我是如何打败拖延症的
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
鲜为人知的编程真相
鲜为人知的编程真相
旅行,写作,编程
旅行,写作,编程
程序员的鄙视链
程序员的鄙视链
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
 程序员的样子
程序员的样子
10个调试和排错的小建议
10个调试和排错的小建议
中美印日四国程序员比较
中美印日四国程序员比较
老程序员的下场
老程序员的下场
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有