权限部门的疑问点

来源: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回答

Jimin

2019-10-28

你好,这个自然是有问题的,你仔细体会一下上个问题给你讲解的内容。
checked字段代表是否需要默认选中,这时候是将一个角色已经分配的权限选中,如果调整为遍历用户权限,假设用户是超级管理员拥有所有权限,那么他打开所有角色看到的都是所有权限点都选中了,对于一个没分配权限的角色,这里正常就一个都不会被选中,一个普通的角色一般只会分配部分权限,很显然调整后展示是错的。
再说hasAcl这个,这个是代表用户是否有权限操作,一个超级管理员拥有所有权限,可以操作所有权限,而使用角色已经分配的权限点肯定小于超级管理员的权限,这样就会出现超级管理员无法操作某些权限,很显然这样也是错的。

0
0

Java开发企业级权限管理系统

源于企业真实Java项目,涉及大量高级技巧,覆盖权限管理开发技术

2260 学习 · 1347 问题

查看课程