代码改变世界

论坛中,用户权限解决方法

2006-03-21 12:46  sun@live  阅读(540)  评论(0编辑  收藏  举报

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

public class rights
{
    
public static int view  = 1;
    
public static int post  = 2;
    
public static int edit  = 4;
    
public static int delete = 8;
    
//
}

假如我们要给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
//

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