代码改变世界

晒晒公司的权限管理(一)

2010-10-13 10:43  苏飞  阅读(13379)  评论(91编辑  收藏  举报

 阅读全文:http://www.cckan.net/forum.php?mod=viewthread&tid=315

 

 

    先谈想法


 

      我记得我之前用很不怎么样的代码规范写过一个关于权限管理 的系统,分享一下自己动手做出来的后台权限管理系统 因为当时的水平有限,呵呵,

这个权限管理 主要是实现了角色这个概念,我是根据用户所属的角色不同,分加载的功能不同的,虽说有点那个,不过也算是实现 了,对于入门的新手来说还是一个不错的例子,有了这个例子再去做,具体到控件每一个用户的功能就会变得非常方便了。思路是一样的,用户与功能的对应,就相当于角色与功能的对应关系一样。

      在做权限功能的时候我们必须明天这样几个对象之间的关系

      1.角色

      2.功能

      3.用户

     它们三个之间有什么关系呢?

   我用几句话来总结一下大家看合适不?

      1.一个用户可以对应多个角色,一个角色可以对应多个用户。多对多关系

      2.一个角色可以对应多个功能,一个功能可以对应多个角色。多对多关系

      3.一个用户可以对应多个功能,一个功能可以对应多个用户。多对多关系

总结起来用户的功能就是,一个用户可以有多个角色,多个功能,用户不仅仅有角色所对应的功能,还可以有角色之外的功能。也就是一个用户不仅仅有它所在角色的功能,还可以额外加一些功能,自由性更大了。

  

    现在一起来看看


 

           我们先来分析一个最重要的三个对象之间的关系吧如下图

     其实我们公司里的权限实现是很简单的,我把他们三个的关系用三个表来体现出来

       1. 用户与功能对应表

       2.用户与角色对应关系

       3.角色与功能对应关系

  如下图

 

我先把这几张表的主要字段说明 一下吧

1.      用户表:

用户ID、注册时间、说明信息昵称、图片、状态ID等级ID

2.      功能表

功能ID功能名称、图片、对应界面、说明、排序号、是否删除、状态ID

3.      角色表

角色表ID角色名称、对应图片、默认地址、排序号、是否删除、状态ID

4.      角色对功能

角色表ID功能表ID说明、注册时间。

5.      用户对角色

角色ID用户ID说明、注册时间。

6.      用户对功能

用户ID功能ID说明、注册时间。

 如果要达到权限控制的功能 我们还要写一个方法来完成

 

    一些相关的方法


 

    1.先不用说,我们要先完成 角色表,用户表,和功能表的增删改查的功能

    2.实现用户与角色的对应关系,有关这张表的角色ID用户ID分别来自角色表和用户表这两张表,我们要事先查询出来现有的用户和角色然后再增加他们之间的关系

 当然我们也可以在增加用户的同时选择 ,为了更好的客户体验,我还打算在角色里直接添加相应的用户从属关系。

     3. 实现角色与功能的对应关系,角色表ID功能表ID要从角色表和用户表中提取,这里是关键,为了更方便的分配功能,我们提供了批量选择功能的方法,在选择一个角色的同时加载所有的功能 ,列出目前所具有的功能,可以根据情况选择功能,只要选择完成后单击确定就OK了,说白了就是把所有功能加载到一个表里,然后在后面加一个单选按钮进行选择

当然大家也可以选择其它方法,这里只不过是其中一种,

    4.实现用户与功能的对应关系,用户ID功能ID ,分别来自用户表和功能表。在这里其实就是想为一个特别的用户开启一些大于他本身角色的功能,但又不能给全他下一个角色的功能,所以用户可以直接对应功能,在查询一个用户的所有功能时,是把所在角色对应的功能与直接对应的功能合并在一起查询,查出来的功能就是用户的所有功能了。

     5.提供一个验证权限的方法就行了,根据当前功能的ID,和用户的ID,来确定用户的所有功能,只要验证是否具有当前的功能,其实就是查出来用户与功能表和角色与功能表中的并集就可以了。

     所有关于这一块的图如下

 

大家可以说说自己的想法,东西重在交流,我是打算这样实现公司的权限控制,我会把我实现的方法一步一步的写出来给大家分享,希望高手们多多指教啊!

     具体的代码实现待续中,,,,,

 所有表结构

如下

 

代码
1.    用户表:
用户ID、注册时间、 说明信息 昵称、 图片 、状态ID、 等级ID。
2.    状态表
状态ID 、表名 、状态名称、 对应图片 、认证、 条件。
3.    用户等级
等级ID 、表名 、等级名称、 对应图片、 认证、 条件。
4.    自然人表
表名、 用户ID、 姓名、 性别、 年龄、 身份证号、 身高 、体重、 国籍、 所在省、 所在县、 所在市。
5.    功能表
功能ID、 功能名称、 图片、 对应界面、 说明、 排序号、 是否删除 、状态ID。
6.    联系方式
表名、 用户ID、 电话、 手机号、 qq、 msn、 旺旺、 个人主页、 邮箱、 地址。
7.    登录表
表名、 用户ID、 登陆时间、 登陆信息、 认证、 验证加密串。
8.    角色表
角色表ID、 角色名称、 对应图片、 默认地址、 排序号、 是否删除、 状态ID。
9.    角色对功能 
角色表ID、 功能表ID、 说明、 注册时间。
10.    用户对角色
角色ID、 用户ID、 说明、 注册时间。
11.    用户对功能
用户ID、 功能ID、 说明、 注册时间。