一个论坛系统中,有N个版块,版块中,不同角色应给予不同权限。
看了应用系统权限表示的算法技巧 里面讲了两种方法,第一种方法,只能解决单权限问题,第二种方法,用的是位权方法,存在一种这样的问题,如果新增了一种权限,所用的权限位就必须新增一位,造成系统可扩展性差。
    大家知道,C++里面,窗体的样式,不是多一种样式,就在后面|(or)一位,这样一来,权限问题就好解决了,扩展性就强了。
    先定义权限值:

论坛中,用户权限解决方法public class rights
}

假如我们要给Group1赋予可查看、可发表权限,那么他的权限值就为:

论坛中,用户权限解决方法//论坛中,用户权限解决方法
论坛中,用户权限解决方法
group1Rights = rights.view | rights.post;
论坛中,用户权限解决方法
//group1Rights = 3;
论坛中,用户权限解决方法
//论坛中,用户权限解决方法

反过来,如果Group2的权限值为6,我们要确定他的权限:

论坛中,用户权限解决方法//论坛中,用户权限解决方法
论坛中,用户权限解决方法
int g2rights = 6;
论坛中,用户权限解决方法
bool isView = ((g2rights & rights.view)==rights.view);
论坛中,用户权限解决方法
//false
论坛中,用户权限解决方法
bool isPost = ((g2rights & rights.post)==rights.post);
论坛中,用户权限解决方法
//true
论坛中,用户权限解决方法
bool isEdit = ((g2rights & rights.edit)==rights.edit);
论坛中,用户权限解决方法
//true
论坛中,用户权限解决方法
bool isDelete = ((g2rights & rights.delete)==rights.delete);
论坛中,用户权限解决方法
//false
论坛中,用户权限解决方法
//论坛中,用户权限解决方法

当然,这些可以封装在一个类里。这里只是演示下。。。。。

相关文章: