权限部门的疑问点
来源:12-1 角色权限树结构接口开发-1

371425
2019-10-28
老师 您说这两个判断可以互换
1.由
if(UserAclIdSet.contains(acl.getId())) {
alcDto.setHasAcl(true);
}
if(RoleAclIdSet.contains(acl.getId())) {
alcDto.setChecked(true);
}
变为
if(UserAclIdSet.contains(acl.getId())) {
alcDto.setChecked(true);
}
if(RoleAclIdSet.contains(acl.getId())) {
alcDto.setHasAcl(true);
}
这里的判断的意思是 当前用户的所有权限点和角色的权限点的共有部分 与 用户的权限点集合和角色的权限点集合做比较
2.可以变为这样吗?为什么
if(UserAclIdSet.contains(acl.getId())) {
alcDto.setChecked(true);
}
if(UserAclIdSet.contains(acl.getId())) {
alcDto.setHasAcl(true);
}
都是由用户的权限点集合做判断可以吗 会导致什么问题?
1回答
-
你好,这个自然是有问题的,你仔细体会一下上个问题给你讲解的内容。
checked字段代表是否需要默认选中,这时候是将一个角色已经分配的权限选中,如果调整为遍历用户权限,假设用户是超级管理员拥有所有权限,那么他打开所有角色看到的都是所有权限点都选中了,对于一个没分配权限的角色,这里正常就一个都不会被选中,一个普通的角色一般只会分配部分权限,很显然调整后展示是错的。
再说hasAcl这个,这个是代表用户是否有权限操作,一个超级管理员拥有所有权限,可以操作所有权限,而使用角色已经分配的权限点肯定小于超级管理员的权限,这样就会出现超级管理员无法操作某些权限,很显然这样也是错的。00
相似问题