尚学堂OA系统中ACL的CRUD解释
来源:互联网 发布:手机淘宝淘口令在哪 编辑:程序博客网 时间:2024/04/30 15:44
尚学堂OA系统中ACL 中用 int 表示权限是什么意思
一个 int 有32 位,用后4位表示CRUD 操作,位的取值1或0表示授权或不授权
/**
* acl实例跟主体和资源关联
* 针对此实例进行授权:某种操作是否允许
* @param permission 只可以取值0,1,2,3
* @param yes true表示允许,false表示不允许
*/
public void setPermission(int permission,boolean yes){
int tmp = 1;
//tmp的二进制形式向左移动permission个单位
//这样经过移动的结果会有四种情况: C:0001 R:0010 U:0100 D:1000
tmp = tmp << permission;
if(yes){
//如果是授权,则把原有的权限与当前的权限相加,二进制用"|"
aclState |= tmp;
}else{
//如果是减去授权,则当前传进来的权限取反,再与原有的权限"&"
aclState &= ~tmp;
}
}
/**
* 获得ACL授权(获得C/R/U/D的权限是否允许或是否确定)
* @param permission C/R/U/D权限
* @return 授权标识:允许/不允许/不确定
*/
public int getPermission(int permission){
//如果继承,则返回未定的授权信息
if(aclTriState == 0xFFFFFFFF){
return ACL_NEUTRAL;
}
int tmp = 1;
tmp = tmp << permission;
//只要C/R/U/D中不全部为没有权限(0000),那么与刚刚传入的权限相"&"是不会出现等于0的.
tmp &= aclState;
if(tmp != 0){
return ACL_YES;
}
return ACL_NO;
}
从你上面的意思看
0001为十进制的1:拥有C权限;
0010为十进制的2:拥有R权限;
0100为十进制的4:拥有U权限;
1000为十进制的8:拥有D权限;
也就是用最后四位来表示CRUD的权限,1表示允许,0表示不允许。
那么,
CRUD的权限就是1111,也就是十进制的15;
减少一个D操作也就是减少8,为7
如果再加上一个D操作,那么就加上8,又为15了.
- 尚学堂OA系统中ACL的CRUD解释
- 尚学堂OA系统中ACL的CRUD解释
- 尚学堂OA系统中ACL的CRUD解释
- 尚学堂 OA
- JSTL标签的问题(尚学堂OA项目开发阶段)
- 尚学堂的JAVA学习
- 尚学堂shopping的经验
- 尚学堂hibernate的总结
- 尚学堂spring的总结
- 尚学堂hibernate的总结
- Struts2+Hibernate3.3+Spring2.5整合实现尚学堂OA
- 尚学堂
- 尚学堂
- 尚学堂
- 尚学堂
- 尚学堂
- 尚学堂的全套学习视频
- 尚学堂shopping的经验--终结版
- 上海感言
- 毕业前的感言——20090319
- 我的的苦恼(一名程序员 )
- 暮光之城 吸血鬼
- 谁开发的“网站备案”系统,应该不给一分钱。
- 尚学堂OA系统中ACL的CRUD解释
- 项目滞后的主要原因
- Eclipse启动错误(jvm terminated. exit code 1)修复方法
- 非常好的游戏论坛。大家都来啊。
- 三年之痒
- 嵌入式开发相关网站-不断添加中
- 跨站脚本攻击之DoS脚本
- afgsagf
- Ubutun tools