做Erp项目,权限管理
得知有一个权限的算法,我根据我的理解写下来,求高手细解......
如: 权限有几种 查看 、审核、 添加 、 修改 、 删除 等
将查看的结果值定为 1
审核的结果值定为 2
添加的结果值定为 4
修改的结果值定为 8
删除的结果值定位 16
当User的权限值为0时则导航栏菜单不显示该项
值为1时则只有查看权限
值为3时则有查看和审核权限
值为5时则有查看和添加的权限
值为9时则有查看和修改的权限
值为17时则有查看和删除的权限
值为7时则有查看、审核和添加的权限
以此类推 .............
首先,查看权限是除开0以外任何权限都必须要添加的
权限值等于各种权限值的和
权限值不等于任何一种或者多钟权限值之和(除开1),权限值全部是唯一的。
我的理解这个算法为 2的N次方
N的取值范围为 0 到无穷大 (不知道打那个符号) 目前正在着手做这一模块,虽说功能完成,但是仍不得解, 求各位前辈细解,能附加实例更感激不尽
如果方便能细说一下页面上这种权限功能如何进行控制
谢谢
得知有一个权限的算法,我根据我的理解写下来,求高手细解......
如: 权限有几种 查看 、审核、 添加 、 修改 、 删除 等
将查看的结果值定为 1
审核的结果值定为 2
添加的结果值定为 4
修改的结果值定为 8
删除的结果值定位 16
当User的权限值为0时则导航栏菜单不显示该项
值为1时则只有查看权限
值为3时则有查看和审核权限
值为5时则有查看和添加的权限
值为9时则有查看和修改的权限
值为17时则有查看和删除的权限
值为7时则有查看、审核和添加的权限
以此类推 .............
首先,查看权限是除开0以外任何权限都必须要添加的
权限值等于各种权限值的和
权限值不等于任何一种或者多钟权限值之和(除开1),权限值全部是唯一的。
我的理解这个算法为 2的N次方
N的取值范围为 0 到无穷大 (不知道打那个符号) 目前正在着手做这一模块,虽说功能完成,但是仍不得解, 求各位前辈细解,能附加实例更感激不尽
如果方便能细说一下页面上这种权限功能如何进行控制
谢谢
权限值大于1的时候,就是会有其他的权限 (等于1是查看权限)
然后要获取到该用户的权限就需要
假设一个权值 int power=31;
我需要知道他有哪些权限
if(power==0)
{
//没有权限 不显示菜单导航
return ;
} if(power==1)
{
//只有查看权限
return ;
}
if(power>1)
{
//有超过查看的权限
power-=1; //减去一去掉查看权限
//然后将power去匹配权限值 //将去除查看权限后的权限值匹配原来定义好的权限值 //首先单个匹配,查看是否有匹配的结果,有则返回,没有则继续往下运行 //两两组合匹配,将任意两个权限值的和与之匹配 注:任意权限值不包括 0和1
匹配的次数等于 (权限值的个数-2)*(权限值的个数-2-1) /2
有则返回,没有则继续往下运行
//三三组合匹配,将任意三个权限值的和与之匹配
// 以此类推 直到找到有与之匹配的权限
//所有的组合,不管是单个、两两组合、三三组合等,所得出的结果值都是唯一的
}我的理解到此处,还望各位细解.........
谢谢
在User的权限设置的时候,讲所有的权限值都相加,存入数据库User表的权限值字段中
到时候写一个公共的方法,需要用到权限处就直接调用, 所有涉及到权限的按钮等都统一命名,这样就可以一次性处理了....