一種常用的權限控制算法的實現
這裡筆者介紹一種很常用
要換成其他的語言主
這裡用java語言描述
為了方便起見
這裡
刪除A---
修改A---
添加A---
刪除B---
修改B---
添加B---
……
理論上可以有N個操作
如果用戶有權限
添加A---
刪除B---
修改B---
那用戶的權限值 purview =
這樣
在JAvA裡
int value = purview &((int)Math
你會發現
原理
位與運算
以上面的式子為例
將它們化成二進制有
&
同理
可以用
即
&
這種算法的一個優點是速度快
可以同時處理N個權限
如果想驗證是否同時有刪除A---
purview&(
設置多角色用戶
下面提供一個java的單操作權限判斷的代碼
//userPurview是用戶具有的總權限
//optPurview是一個操作要求的權限為一個整數(沒有經過權的!)
public static boolean checkPower(int userPurview
{
int purviewValue = (int)Math
return (userPurview & purviewValue) == purviewValue;
}
當然
幾點注意事項
首先
因此
其次
操作權限值請用唯一的整數!
public class Limits {
/**
* 常規信息下發
*/
public static final int CGXX_XF =
/**
* 常規信息列表
*/
public static final int CGXX_LB =
/**
* 常規信息審核
*/
public static final int CGXX_SH =
/**
* 包月用戶查看
*/
public static final int BYYH_CK =
/**
* 違章點播統計
*/
public static final int WZDB_TJ =
/**
* 定制提取詳細
*/
public static final int DZTQ_XX =
/**
* 請求記錄
*/
public static final int QQJL =
/**
* 管理員權限
*/
public static final int GLY_QX =
/**
* 驗證權限
* @param limitsSum 權限總和 權限總和 為每個權限的
* @param checkInt 具體權限
* @return
*/
public static boolean checkLimits(int limitsSum
return (limitsSum & (
}
/**
* 生成權限總值
* @param limits
* @return
*/
public static int createLimits(String[] limits){
int limitsSum =
for (int i =
limitsSum += (
}
return limitsSum;
}
}
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25604.html