C#权限管理与设计:数据库通用性与权限管理与判断
类型:文件处理大小:48KB语言:中文评分:6.6标签:下载权限管理是很多软件中非常重要的模块。它的设计直接影响软件的安全性、权限管理的可扩展性和可操作性,以及代码中权限判断的复杂性和效率。本文主要想和大家分享的是对权限管理和设计断断续续的思考和学习,以及对软件开发的一些个人看法。说到‘版权管理与设计’,大家可能第一时间会想到这个花园里的吉日联欢晚会。在这方面,他可以被视为‘大牛’或专家——的‘通用权限管理系统’。怎么做,看他的博客就差不多知道了(好像是我在宣传他,呵呵.但实际上,并不是),而且我暂时不敢说别的,至少。他做的是一个普世的权利管理体系,那么什么是“普世”呢?我来说说我个人的理解:a .(主流)数据库通用——意味着可以轻松适应不同(类型)的数据库,保证软件的可移植性。这一点集中在数据库设计上!b .权限管理和判断在思想上是通用的,同样的解决方案或实现方法或思想可以用在不同的开发语言和项目类型中(大方面如:b/s和c/s),如吉日的权限系统——,具有通用性,可以应用在C#语言开发的web和WinForm程序中。——个人认为更重要的是思路(或解决方案)是通用的,就像一个好的购物车实现思路或方案一样,可以很好的用在php、jsp、C#等语言开发的项目中。【问题的解决基本独立于编程语言,唯一不同的是实现】。我对权限管理和设计的思考和研究,主要目的是在以后的项目开发中,可以用自己的想法或者(开发)一个类似于Jiri Brothers的‘权限管理系统’,能够快速有效的实现软件的权限管理部分(我感觉权限管理部分目前还是一个比较棘手的事情)。在学习和思考的同时,不局限于自己的(空洞的)想法,也学习和研究一些自己觉得可以完善自己想法和借鉴的项目案例,比如Jiri的权限系统,(通用权限管理系统)FrameWork104Src、MemberShip、phpcms、ecshop等。——.然而,由于时间关系,我只粗略地看了前两个。【思考学习,或者研究,我建议的方法是:先自己确定或者整理出大致的思路,然后借鉴和参考和你研究方向相同的其他项目案例(最好是有一定‘成熟度’的大型项目),从而完善自己的思路,(对于参考项目)取长补短,这样你的研究才能站在更高的起点(可以称之为‘站在巨人的肩膀上’)因为你的思路再好,再独特,你也考虑不透。也许你的想法是好的,但它只能考虑问题的一个方面。和优秀的相比,没有可比性。比如之前有人让我给他开发CMS系统,我就向他建议:要想做好,是一个庞大的工程。如果真的想自己开发,最好借鉴phpcms等流行的CMS系统,不然做出来的产品在功能和易用性上可能都不如别人一半。做项目或研究,不要盲目做,参考和借鉴优秀的项目,否则你的项目或研究会死在开发中!】。
///summary////获取用户的权限和操作权限////summary private void get permission(){ this . dbhelper . open();//用户的操作权限this . btnuserad . enabled=this . is authorized(' user . add ');this . btnuserdelete . enabled=this。isaauthorized(' User。删除');this . btnuserexport . enabled=this。isaauthorized(' User。export’);this . btnuserimport . enabled=this。isaauthorized(' User。导入');this.btnUserPrint.Enabled=this。isaauthorized(' User。print’);this . btnuserupdate . enabled=this。isaauthorized(' User。更新');//角色this . btnroleadd . enabled=this . is authorized(' role . add ');this . btnroledelete . enabled=this。IsAuthorized('角色。删除');this . btnroleexport . enabled=this。IsAuthorized('角色。export’);this . btnroleimport . enabled=this。IsAuthorized('角色。导入');this.btnRolePrint.Enabled=this。IsAuthorized('角色。print’);this . btnroleupdate . enabled=this。IsAuthorized('角色。更新');这个。关闭();}以上是Jiri权限系统的Permission项目中的一段代码。其功能一目了然。——根据当前登录用户的权限判断页面上的按钮是否可用。之所以贴出来,是因为我个人觉得这个代码不够简洁有效,建议可以考虑用集合来处理判断权限【这也是我在自己的研究中基本考虑过的可行的一个简单方法。具体思路需要从整体上进一步考虑。看了FrameWork104Src系统,也觉得它的权限判断有点繁琐。更重要的是,我发现了一个bug——,这个bug在很多软件中很容易被忽略。——的权限判断不够彻底。好的权限管理的结果应该是保证软件足够的安全性,禁止用户“做他们做不到的事情”。这个bug是:我以用户身份登录后,这个用户没有添加成员的权限。但是,为了测试我的权限控制是否足够彻底,我直接访问了在Url中添加成员的页面。谁知道,我进去了。不过还好,当我点击OK按钮时,弹出了提示——“无操作权限”。因此,在这里的提醒下,目前正在做权限管理功能或模块的朋友,请检查一下你的软件中的权限管理是否可用。操作按钮等。不可见或不可用,无法从根控制“用户”的操作。需要在提交的方法或处理中添加权限判断。就像:提交登录或注册页面的js验证,无论多么完美或强大,都必须在后台代码中添加必要的判断!好吧,暂时就写到这里吧。(有时候用心写博客是需要时间的,呵呵),希望一些正在做这方面研究的朋友多多指教!
版权声明:C#权限管理与设计:数据库通用性与权限管理与判断是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。