权限标记的问题
来源:12-3 角色权限树结构接口开发-3

371425
2019-10-25
Set<SysAcl> AclSets=new HashSet<>(roleAclList);
AclSets.addAll(userAclList);
for(SysAcl acl:AclSets) {
AclDTO alcDto=AclDTO.adapt(acl);
if(UserAclIdSet.contains(acl.getId())) {
alcDto.setHasAcl(true);
}
if(RoleAclIdSet.contains(acl.getId())) {
alcDto.setChecked(true);
}
aclDtoList.add(alcDto);
}
这里的两个判断没理解是啥意思?
if(UserAclIdSet.contains(acl.getId())) {
alcDto.setHasAcl(true);
}
1。为什么判断UserAclIdSet是否包含当前权限点的id 就为DTO对象设置为ture?
if(RoleAclIdSet.contains(acl.getId())) {
alcDto.setChecked(true);
}
2。为什么判断RoleAclIdSet是否包含当前权限点的id 就为DTO对象设置为ture?
3.这两个判断互换的话 可以吗?
写回答
2回答
-
你好,这两段代码处理的逻辑不同且没有交集,因此可以交换。具体说一下你其他的疑问:
这里代码为什么这样写,其实课程视频里有专门介绍,如果没看视频或者忽略了,确实会很难懂,关键点在于理解这两个字段的根本含义。
一个用户进行角色权限调整时,除了展示出所有的权限,还要将角色之前已分配的权限默认给勾选上,代表这个角色已经分配的权限,这里的checked字段的作用就是决定是否需要默认勾选上;同时,进行角色权限调整的用户,不一定是具有所有权限,而这个用户只能操作他拥有的权限,hasAcl字段的作用就是决定用户是否具体当前权限点操作权限。00 -
371425
提问者
2019-10-25
老师 请问一下 假如当前用户登陆后 根据用户id获取到他当前所有的权限点 那为啥还要获取角色的权限点?
00