首页 >后端开发 >php教程 >求教“权限管理”的思路,最好是通过“角色”+“权限”来实现的

求教“权限管理”的思路,最好是通过“角色”+“权限”来实现的

WBOY
WBOY原创
2016-06-23 14:27:421075浏览

权限 角色

如题。。。

在复杂的权限设置面前,直接手写if、else我觉得应该是不行了吧

求教思路

回复讨论(解决方案)

在建表的时候就该有权限表,角色的一个属性外键关联这个表

在建表的时候就该有权限表,角色的一个属性外键关联这个表

可否说的再详细一些呢?主要是 写程序时  应该在哪一个环节来引入这个权限判断 如何引入

以前写过个小项目也是权限问题,我们是这样解决的:当用户登录时就把用户的信息(包括权限,我那时权限用的是数字。假如该用户权限为5)存在session中,当该他要做某个操作时比如删除(权限要求要>6),比较当前权限和要求权限的大小....太遥远了 记不太清楚了

一般身份识别(登录)后就引入角色到session,然后根据角色查表得到权限

表设计:角色关联菜单(一级菜单~二级菜单……),角色关联操作(查看,删除,搜索,修改)

先确定权限字的表示和存储
php 的整型数为 logn 类型,具有64个二进制位。
因此,足以满足大多数应用的需求。(每个二进制位表示一个动作)

每个角色具有一个权限字,每个用户可以具有多个角色
每个用户还可以拥有一个例外权限字

综合权限采用位运算求出:
用户权限 = 角色权限 xor 例外
其中:角色权限 = 用户隶属角色权限 or 用户隶属角色权限 ...

角色权限;权限菜单

先确定权限字的表示和存储
php 的整型数为 logn 类型,具有64个二进制位。
因此,足以满足大多数应用的需求。(每个二进制位表示一个动作)

每个角色具有一个权限字,每个用户可以具有多个角色
每个用户还可以拥有一个例外权限字

综合权限采用位运算求出:
用户权限 = 角色权限 xor 例外
其中:角色权限 = 用户隶属角色权限 or 用户隶属角色权限 ...

感谢。  关于权限的存储和分配说的非常清楚

那具体在调用时怎么使用呢?

比如现在有一个 删除 按钮

具有删除权限的角色们查看这个页面时可以看到这个按钮, 该怎么写? 用if、else吗?

点击删除按钮后提交到PHP 还需要再次判断权限吗?

条件判断总是必要的,不然如何知道谁是谁?
不过也很简单
$u = 0b1011; //用户权限
$p = 0b0010; //动作号(前面我已经讲了可以有64种动作)
if($p & $u) echo '有权限';

找一下RBAC设计模式

用户表关联用户组表,用户组表关联权限表,当用户进入的时候,先判断属于哪个组,然后根据组设定权限,很多开源产品都这么设计的。

简单的的  角色储存好每个方法, 使用这个方法时 判断这个用户角色是否有这个方法权限

RBAC权限模式就可以  这些网上一大堆,自己可以查查

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn