问答
# 问答
- 能看到别人的数据,但不能更新和删除
- 请假了,生成临时授权码,临时授权给同事帮我做(同一账号授权码登录)
- 部门经理能看到部门下所有人的数据,A主管负责一二组,只能看到一二组数据
- 兼职多个部门,不同部门任不同职位,不同职位操作不同数据
- 对某个用户查看某个功能时隐藏某列数据
- 实时委托绑定绑定,即某个订单客服为A时能看到售后B录入的费用数据,B售后同样能看到A客服录入的费用
- 查看与”我“关联的(业务关联,比如销售是我,客服是我)数据,同时销售经理和客服经理都分别能看到对应部门数据
- 临时追加权限条件,查看条件允许数据(比如查看所有供应商为可口可乐的数据)
- 换人不换职位,不需更改权限(例如张三卸任研发部“技术经理”,李四就任“技术经理”)
- 人员换部门,不需更改权限(原部门对应的经理将看不到对应的数据,新部门的经理能看到对应的数据)
- 自定义查看/操作某些人/组的数据,排除某些人/组的数据
- 某些账号只能单账号登录,某些账号可以账号同时登录
- 对“销售”人员进行忽略分公司过滤,即只要销售是”我“就是看到数据,不管是哪个分公司的数据
- 允许某个IP段内的第三方用户查看某些授权(临时授权)数据
# 能看到别人的数据,但不能更新和删除
提示
更新和删除方法请添加@Action和@ActionConnect标签进行数据权限过滤!
方法一:在授权管理中,选择”个人“/"用户组",选择对应的功能(查询功能),在”功能权限中“,选择”指定范围“,在下面的组织列表中选择要查看相关人员的数据,请参考界面进行配置!
方法二:也可以通过PermContext在编程时进行指定某些人的委托
# 请假了,生成临时授权码,临时授权给同事帮我做(同一账号授权码登录)
注意
授权码只能由一个人登录,并且在特定的授权码登录页进行登录!
用户在登录业务系统后,点击右上角”个人头像“->”个人中心“中设置授权码及有效期,点击更新信息!
# 部门经理能看到部门下所有人的数据,A主管负责一二组,只能看到一二组数据
- 在”职位管理“中,对应的部门下,新建职位”部门经理“,”权限范围“选择”本组织“,点击保存,该职位将会看到部门下所有人的数据 同样的操作,新建职位主管,”权限范围选择“用户自定义”,选中负责的组织,点击保存,该职位将只看到对应组织下的数据
- 在“组织架构”中,选择设置职位的组织,选择人员“双击”选择职位,进行保存
# 兼职多个部门,不同部门任不同职位,不同职位操作不同数据
提示
用户登录时只能选择一个组织进行登录,切换组织需要重新登录!
- 系统支持一个用户可以在多个部门中,在所需兼职的部门中,新建对应的职位,分配对应的数据权限,同时职位可以选择“分配角色”,对直接进行角色分配
- 在“组织架构”中选择“分配用户”将用户分配到此架构,双击用户,设置职位,分配上对应的职位
# 对某个用户查看某个功能时隐藏某列数据
提示
列数据权限功能,只针对SELECT查询,更新操作和删除操作不支持此功能!
打开”授权管理“,选择用户,选择对应的功能,切换到”列数据权限“标签卡,选择对应的表,勾选左边的列,点击”排除“, 点击保存。
# 实时委托绑定绑定,即某个订单客服为A时能看到售后B录入的费用数据,B售后同样能看到A客服录入的费用
此种权限因为是实时的,运行时才知道提单对应的客服和售后,通过PermContext来解决,相关代码片段为
String service = order.getService();
String afterSale = order.getAfterSale();
if (currentUserName().equals(service)) {
PermContext.addUserNos(afterSale);
}
if (currentUserName().equals(afterSale)) {
PermContext.addUserNos(service);
}
2
3
4
5
6
7
8
9
10
11
# 查看与”我“关联的(业务关联,比如销售是我,客服是我)数据,同时销售经理和客服经理都分别能看到对应部门数据
在系统中,可通过TAG绑定来解决问题,假设客服的TAG为SERVICE,销售的TAG为SALLER,对应的方法为查询订单,则配置为
@Action(value = "ORDER_SEARCH")
@ActionConnect(value = {"listOrder","countOrder",
userAuthColumn= {UserTag.SERVICE + Strings.HASH + "service_code", UserTag.SALLER + Strings.HASH + "seller_code"},
groupAuthColumn = {UserTag.SERVICE + Strings.HASH + "service_code", UserTag.SALLER + Strings.HASH + "seller_code"})}
@override
public SearchResult<OrderDto> searchOrder(OrderDto order, int pageNo, int pageSize) {
int count = baseMapper.selectOrder(order);
if (count == 0) return new SearchResult<>();
return new SearchResult(mapper(baseMapper.listOrder(order, pageNo, offset(pageNo, pageSize))), count);
}
2
3
4
5
6
7
8
9
10
11
# 临时追加权限条件,查看条件允许数据(比如查看所有供应商为可口可乐的数据)
提示
此配置不影响正常查询条件,并且不影响原有数据权限,只是追加权限!
打开”授权管理“,选择用户,选择对应的功能,切换到”业务数据权限“, ”OR条件“选中, 选择”对应表格“,在下面的列表中选中”供应商“列,条件选择”等于“,值输入”可口可乐“
# 换人不换职位,不需更改权限(例如张三卸任研发部“技术经理”,李四就任“技术经理”)
打开”组织架构“,选中对应的部门,会列出对应的人员,双击人员,职位中选择”清空“,点击保存, 选中需要设置的另一个人员,双击打开,职位选中对应的职位,点击保存
# 人员换部门,不需更改权限(原部门对应的经理将看不到对应的数据,新部门的经理能看到对应的数据)
打开“组织架构”,选中对应的部门,选中人员,点击“移动”,选择新的组织,点击确定(角色会自动切换对应的部门)
# 自定义查看/操作某些人/组的数据,排除某些人/组的数据
打开“授权管理“,选中”用户组“或”人员“,点击对应的功能,权限范围选择”自定义“,勾选需要查看的人员或组织,选中需要排除的人员或组织,点击排除,将展示在”排除列表“中,点击保存!
# 某些账号只能单账号登录,某些账号可以账号同时登录
默认情况下,账号在同一”端“只能登录一次,再次登录会将上一次登录的”顶掉“,同时系统也支持”SESSION共享“,即复制当前链接,打开浏览器新标签,转到复制的链接,账号会共享,实现两边同时操作的目的。 要满足上面的需求,在”用户管理“中双击对应的用户,登录模式选择“共享登录”
# 对“销售”人员进行忽略分公司过滤,即只要销售是”我“就是看到数据,不管是哪个分公司的数据
假设销售的TAG为SALLER,对应的方法为查询提单,则配置为
@Action(value = "ORDER_SEARCH", ignoreCompanyScopeTags = UserTag.SALLER)
@ActionConnect(value = {"listOrder","countOrder",
userAuthColumn= {UserTag.SALLER + Strings.HASH + "seller_code"},
groupAuthColumn = {UserTag.SALLER + Strings.HASH + "seller_code"}),
}
@override
public SearchResult<OrderDto> searchOrder(OrderDto order, int pageNo, int pageSize) {
int count = baseMapper.selectOrder(order);
if (count == 0) return new SearchResult<>();
return new SearchResult(mapper(baseMapper.listOrder(order, pageNo, offset(pageNo, pageSize))), count);
}
2
3
4
5
6
7
8
9
10
11
12
# 允许某个IP段内的第三方用户查看某些授权(临时授权)数据
提示
接入用户都会绑定系统内部的用户,从而统一上线角色配置和数据权限配置功能!
打开”接入用户“,点击”新建“,APPID和APPKEY自动生成,设置IP白名单,白名单支持192.168.10.10/24格式,绑定用户,点击保存