代码改变世界

【自然框架】之通用权限的Demo(一):角色的添加和修改

2009-06-15 18:58  金色海洋(jyk)  阅读(5633)  评论(52编辑  收藏  举报

 

      非常抱歉,我是一个靠激情来工作的人,有心情做什么多快,没心情的时候什么都不爱做。最近很烦,所以速度也很慢。原本打算周一拿出来Demo的,结果延迟了现在。希望大家多多包含。这个Demo并不完整,目前权限方面只实现了角色的添加和修改,其他的还没有实现。我还是一点一点来吧,我是怕如果我等到Demo更完善才拿出来的话,我会承受不了,而放弃这个计划。所以,咬咬牙,一步一步来。后续功能的Demo也会尽快拿出来,一两天吧。

 

一、 环境
      Vs2008、.net Framework 2.0、asp.net(c#)、SQL Server 2000 。抱歉,没有VS2005的Demo

二、 项目结构
      1、配置信息管理程序权限的管理


            这里就是自然框架里的配置信息的管理程序,我就是通过这个程序来管理配置信息,也可以通过这个程序来完成项目中的基本功能(比如增删改查)。当然这个还没有完全做好。
            权限管理只是自然框架的一个部分。

 

      2、登陆人员信息管理


 

            这是一个独立的项目,这个项目比较简单,就是要实现用户的登录、登出、保存登陆状态、保存用户的常用信息。为什么要单独设置一个项目呢,原因很简单,这一块基本可以独立出来,就是说当第一个项目做好之后,再写第二个项目的时候,只需要引用这个dll文件就可以了。不用在重新写一遍(或者copy)用户登录方面的代码了。

      3、通用类库(包括自定义控件)
            这个指的是数据访问函数库、常用函数库、自定义控件等。

 

三、 UI里的基类


 

            我是比较懒的,所以我在UI里面也设置了基类,就是说把公用的代码放在了基类里面,这样就可以省去写很多的重复代码的烦恼了。

 

四、 角色管理
      写了这么多和角色无关的,不知道大家烦了没有。可能有一些人的方式是先设计好了角色,然后给客户使用。可能在设计项目的时候就把角色设计好了,或者在编码之前,或者在交给用户测试(使用)之前就设计好了角色。而我呢,我的项目的角色,完全有客户自己设置。做设计、写代码的时候根本就不用考虑权限的问题。所以我觉得应该先演示一下角色是如何来由客户维护的。
      这里主要说的就是角色的添加、修改。而且粒度也比较粗,只演示了权限到节点、权限到按钮,并没有加入权限到字段、资源过滤和“拒绝”的功能。我想还是一步一步的来,因为是要通用,所以要考虑到很多的情况,有简单的需求(粗粒度),也有复杂的需求(细粒度、资源过滤、权限到字段等)。所以我想还是“步步为营”的好。另外这几天心情很乱,而我又是一个感情用事的人,心情不好,速度就很慢了,望大家谅解。

 

 

 

(“节点”后面的那个文本框不用输入信息。上面的那个三行的table,就是表单控件自动生成的。节点是可以展开和收拢的)

 

 

五、感谢liyf 把我写的这几章的内容整理成了word文档,而且加上了修饰。说起来很惭愧,我是先在word里面编写、画图。只是比较懒,word里面并没有做任何的修饰,而是在写博文的时候才在“在线编辑”里面做一些修饰。所以我想我还是把word原稿也提供下载吧。呵呵。金色海洋通用权限.rar 

 

六、 后续的功能也会继续完善的,写好一块就发出来一块。大家不会嫌我墨迹吧。

 

七、 注意事项
 修改连接字符串,打开web.config,修改“ConnectionString”后面的内容
 Demo需要的Dll都在bin文件夹下面,如果提示没有找到dll文件,请修改引用路径,或者重新引用。
 数据库说明文档使用Excel 2007,所以如果您没有安装office 2007的话,可能在打开“数据文档、建表”的时候发生错误,不过这个不影响角色的演示,所以暂时先不修改了。以后会改成连接Excel 2003 的方式。
 使用的时候,需要输入用户名和密码,管理员的用户名:admin,密码:123

八、  FAQ
      1、 这么多的框框要选择,如果我要是给总裁做角色,而总裁什么都能做,那我岂不是要累死?
            这个我也想到了,我采用了“联动”的方式,就是说如果您在一级节点的框框里打上了对号,那么他的所有子节点、子子节点,和对应的按钮的框框都会被打上对号。如果你去掉了一级节点的对号,那么子节点和按钮的对号也会跟着去掉的。

      选择二级、三级、n级节点都是一样的原理。而且同时会把上一级的节点的框框也打上对号。没有上一级,哪来的这一级呀。


      2、 吉日嘎拉的“权限表”和Role_RoleButton表是什么关系?
            我的理解:不一定正确哦。
            Role_RoleButton = 一少半的吉日嘎拉的“权限表”。
            或者Role_RoleButton + Role_RoleResource + Role_ResourceControlCase = 一多半的吉日嘎拉的“权限表”。
            我为什么分了这么多的表而不用一个表呢?一是表里的记录会很多,合成一个表记录会更多,要考虑一些效率的问题。二是单一职责,一个表就是记录一个方面的事情,合与不合要从多个角度去考虑,应该没有定论,也不应该说我分开成多个表了就是瞎搞吧。


      3、 这个Demo怎么这么别扭呢?
            我没有按照三层的方式来写,也没有按照MVC的方式来写,也没有使用实体类(不知道人员管理的那个算不算)。所以您可能看着很别扭。其实这个就是我写项目的方式。
            请不要按照三层等标准来检查这个Demo,否则的话,您找到的问题,如果用A4纸打印出来的话,可能会有一厘米厚。
            Demo的很多地方都没有完善,甚至没有实现其功能。

 

九、Demo和数据库的下载:通用权限相关文档的下载【2009.6.15更新】

 

============================================

ps:

这里不欢迎吉日嘎拉!他的回复,无论什么内容,一律删除。原因如下:
1、 他喜欢pk,喜欢给自己找个对手,练习他的pk水平,他的心里素质很好。但是我不喜欢pk,我心里素质很差,所以希望他能放过我。如果还来的话,那我就只好删回复了。
2、 他的回复对于我来说没有任何意义和帮助。这个不是谁高谁低的问题,而是他的回复很泛泛、很空洞。从来不说细节,从来不给出一个具体的帮助,没有一个细节说明。好像他在做广告,说他如何如何厉害,但是要我给他交学费,然后才能告诉我。对不起,我很穷,交不起学费。

3、 他一出现,就会引出来其他的人对他的攻击。因为在他的帖子里,对他不利的帖子都被他给删除了,所以有些人借此机会就到我这里来了。要吵出去吵,别在这里烦我,谢谢。

 

 

2