苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 9717|回复: 6

[学习心得] 晒晒公司的权限管理(一)

[复制链接]
发表于 2012-8-30 09:32:27 | 显示全部楼层 |阅读模式
    先谈想法


      我记得我之前用很不怎么样的代码规范写过一个关于权限管理 的系统,分享一下自己动手做出来的后台权限管理系统 因为当时的水平有限,呵呵,
这个权限管理 主要是实现了角色这个概念,我是根据用户所属的角色不同,分加载的功能不同的,虽说有点那个,不过也算是实现 了,对于入门的新手来说还是一个不错的例子,有了这个例子再去做,具体到控件每一个用户的功能就会变得非常方便了。思路是一样的,用户与功能的对应,就相当于角色与功能的对应关系一样。
      在做权限功能的时候我们必须明天这样几个对象之间的关系
      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,来确定用户的所有功能,只要验证是否具有当前的功能,其实就是查出来用户与功能表和角色与功能表中的并集就可以了。
     所有关于这一块的图如下


大家可以说说自己的想法,东西重在交流,我是打算这样实现公司的权限控制,我会把我实现的方法一步一步的写出来给大家分享,希望高手们多多指教啊!
     具体的代码实现待续中,,,,,
所有表结构
如下
[C#] 纯文本查看 复制代码
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、 说明、 注册时间。


说实话啊,现在再看看当初的这些要法有些不认同了,其实不需要用户与功能直接对应,多建几人角色就行了,大不了 一个功能一个角色,而且我相信也不会到这个程度


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2012-9-18 10:20:35 | 显示全部楼层
楼主写得不错,借鉴了,自己也正准备写一个小型的管理系统。
 楼主| 发表于 2012-9-18 10:27:26 | 显示全部楼层
无闻.。 发表于 2012-9-18 10:20
楼主写得不错,借鉴了,自己也正准备写一个小型的管理系统。

那挺好,是从园子里过来的吧
 楼主| 发表于 2012-10-11 17:19:39 | 显示全部楼层
dyg540 发表于 2012-10-11 16:21
哎,我还在这个地方纠结啊

?纠结什么
发表于 2012-10-22 14:22:00 | 显示全部楼层
非常不錯的權限管理系統。
发表于 2013-2-4 00:51:39 | 显示全部楼层
谢谢提供学习的机会
发表于 2013-6-24 22:31:10 | 显示全部楼层
非常感谢你帮了我的大忙,真的太感谢你啦!

真的很感谢老大啊。太好了
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-27 19:51

© 2014-2021

快速回复 返回顶部 返回列表