实用的权限管理
  对多数网站来说,使用完整的rbac权限管理杀鸡用牛刀绝对的吃力不讨好,因为我们只是简单分角色然后对角色进行管理行使其相对于的角色赋予的权限;

在实际的开发中用位运算来对权限进行验证是十分实用的技巧

1. 用2的n次幂组成权限值的集合,如1、2、4、8、16...,某用户的权限值为其子集中的整数之和,如 7=1+2+4,5=1+4。每个功能模块对应不同的权限值(2^n) 从数据库中取出用户的权限值k和功能模块权限值g进行位运算,
既 $t = k&g ; $result = $t == g ? true : false;当$result == true 则该用户有该功能模块的权限;

2.用质数2、3、5、 7、11...组成权限集合,某用户的权限为其子集中各整数的乘积,如 210 = 2*3*5*7,我觉得这种方法很有趣,难点在于如何分解质因数;但我有些不认同原作者的提法,他认为权限之间可能存在包含关系,

如某用户有删除权限,则 其一定有浏览权限,要不然就没法删除,事实确实是这样,不过我认为这样太复杂了,容易出错,我觉得权限最好是“原子”的,互不干扰,也就是说某用户有删除 权限而没浏览权限则其无法进行删除操作,

第一种方法:

CREATE TABLE `manager` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '管理员表id',
`name` varchar(16) NOT NULL COMMENT '管理员名',
`password` varchar(40) NOT NULL COMMENT '管理员密码',
`level` tinyint(2) unsigned NOT NULL DEFAULT '1' COMMENT '权限 0=超级管理员 1=仓管 2=客服 ...',
`account` varchar(16) NOT NULL COMMENT '帐号',
`level_auth` int(10) NOT NULL COMMENT '对应模块权限值之和',
PRIMARY KEY (`id`),
UNIQUE KEY `account` (`account`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COMMENT='管理员表';

//1.配置各模块对应权限值

//2.定义验证权限方法

//3.控制中权限管理

//头部视图权限控制

大致思路:1.定义配置文件保存模块对应权限值 2.数据库中保存用户对应的模块权限之和  3.控制器中对用户权限和 与  该模块对应的权限值 相与 判断用户是否有该模块权限  4.视图头部权限验证 与3中的一致

优点:简单,可以添加更多角色(级别) ,可以改变不同级别用户权限

缺点:超级管理员不能生成不同级别用户,只能数据库手动添加,注:当然也可以做相关添加权限模块

ci中简单实用的权限管理的更多相关文章

  1. Yii框架中使用SRBAC作为权限管理模块时遇到的问题

    Yii框架中使用SRBAC作为权限管理模块时遇到的问题   看到Yii中提供RBAC的插件,SRBAC,就想用用. 结果按照手册上的安装办法,整来整去,安装完了,可就是进不了权限管理界面. 最后想到, ...

  2. HDFS、Yarn、Hive…MRS中使用Ranger实现权限管理全栈式实践

    摘要:Ranger为组件提供基于PBAC的鉴权插件,供组件服务端运行,目前支持Ranger鉴权的组件有HDFS.Yarn.Hive.HBase.Kafka.Storm和Spark2x,后续会支持更多组 ...

  3. MySQL中的账号与权限管理

    MySQL权限管理 权限系统的工作原理     MySQL权限系统通过下面两个阶段进行认证:     (1)对连接的用户进行身份认证,合法的用户通过认证.不合法的用户拒绝连接.     (2)对通过认 ...

  4. Yii2系列教程五:简单的用户权限管理

    上一篇文章讲了用户的注册,验证和登录,这一篇文章按照约定来说说Yii2之中的用户和权限控制. 你可以直接到Github下载源码,以便可以跟上进度,你也可以重头开始,一步一步按照这个教程来做. 鉴于本教 ...

  5. 小白养成记——Linux中的用户和权限管理

    1.用户组管理 每个用户都属于一个用户组,系统可以对一个用户组中的所有用户进行集中管理. 在创建用户时,如果未指定组,则系统会创建一个与用户名同名的组. 以下是关于用户组管理的一些基本命令: 新建用户 ...

  6. 简单的MVC 权限管理

    花了3天时间研究了下对于 NHibernate+MVC4+bootstrap+Redis(这个是选配只做了登陆测试)+T4 这些都是第一次使用.用着有些生硬权当鼓励下自己,记录下来有空就继续完善. 思 ...

  7. 在MySql中实现MemberShip的权限管理

    步骤: 1.在MySql种创建一个数据库,名称任意取,我们只是要得到一个空的数据库,我们假设这个数据库的名称为authentication. 2.在VS种创建一个Web应用程序,File——new—— ...

  8. php 简单权限管理实现

    权限管理介绍.与简单实现思想 权限管理 此函数为模块访问权限管理 实现思路为:根据传进来的权限值,进入不同的权限获取区间,然后根据模块名字判断是否有这个模块的访问权限 使用说明:在每一个模块开始之前调 ...

  9. 用户和用户组以及 Linux 权限管理

    1.从 /etc/passwd 说起 前面的基本命令学习中,我们介绍了使用 passwd 命令可以修改用户密码.对于操作系统来说,用户名和密码是存放在哪里的呢?我们都知道一个站点的用户名和密码是存放在 ...

随机推荐

  1. contenteditable

    http://www.w3school.com.cn/tags/att_global_contenteditable.asp 做编辑器经常用这个属性 使得整个编辑区域所见所得 http://www.c ...

  2. asmdisk opened & asmdisk cached

    ASMDISK OPENED - Disk is present in the storage system and is being accessed by Automatic Storage Ma ...

  3. WebService 的一些基本概念

    一. 1.Endpoint http://www.ttdev.com/SimpleService 这个webservice全名就是所谓的"endpoint" 2.RPC type ...

  4. zend optimizer在wamp的基础上安装

    在用wampserver集成开发环境下,有时会碰到一些开源程序需要zend optimizer的支持,下面我用的wamp的版本是2.0,optimizer的版本是ZendOptimizer-3.3.3 ...

  5. !!20160829——多次错误的T+0操作

  6. m球求n盒子问题

    球同盒同可空盒问题 #include <bits/stdc++.h> using namespace std; const int N = 25; int dp[N][N]; int ma ...

  7. Codeforce Round #214 Div2

    我是不是快要滚蛋了,这次CF爆0? 居然第一题都过不去了,妈蛋附近有没有神经病医院,我要去看看! 精力憔悴! 第一题,我以为要恰好这么多钱,不能多余,想想这也没必要,不符合逻辑,及自己就是这么傻逼! ...

  8. C++字符串(String)

    字符串的声明: string s; string str="abcdefg"; char ch[]="abcdefg"; //使用string类型初始化另一个s ...

  9. Winform TreeView 节点拖动

    private void treeView_ItemDrag(object sender, ItemDragEventArgs e) { TreeNode dragNode = e.Item as T ...

  10. [原创]java WEB学习笔记91:Hibernate学习之路-- -HQL 迫切左外连接,左外连接,迫切内连接,内连接,关联级别运行时的检索策略 比较。理论,在于理解

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...