如何检查用户是否属于服务器端的某些用户条件?

时间:2016-12-08 17:05:07

标签: permissions servicenow

基于官方wiki page,用户标准记录可能包含一组特定的用户,组,角色,部门....

我的问题是,我是否必须根据用户标准对用户进行手动检查,例如:

  1. 检查用户是否存在于用户条件用户列表中
  2. 然后,如果先前的测试失败,请检查用户角色列表中是否存在用户角色
  3. 然后如果先前的测试失败,请检查部门....等等
  4. 或者雪中是否有开箱即用的东西为我执行这些检查?我想应该有一些方法,但我在官方维基或文档中找不到任何相关的东西

3 个答案:

答案 0 :(得分:1)

因此,有一个内置函数可以获取当前登录用户可用的所有用户条件记录的ID:

SNC.UserCriteriaLoader.getAllUserCriteria()

上述函数返回ArrayList<String>类型的对象,因此您可以通过以下方式检查此对象中是否存在目标用户条件: SNC.UserCriteriaLoader.getAllUserCriteria().contains(user_criteria_sys_id)

这解决了我的问题,我怎么还不知道是否有一些接受用户id作为参数的通用方法

答案 1 :(得分:0)

我相信您要找的是全部匹配复选框,请查看http://wiki.servicenow.com/index.php?title=User_Criteria#Matching_All

上的文档

如果您取消选中此框,则会检查用户是否符合条件的任何部分。

如果您检查此框,则需要匹配所有条件。

示例1 - 全部匹配 未选中

enter image description here

在此示例中全部匹配 未选中,如果用户符合以下任何条件,则他们就是此用户标准的一部分。

User in role: Asset
or
User in company: ACME EMEA
or
User in department: Development

示例2 - 全部匹配 已选中

enter image description here

在此示例中,全部匹配 已选中,并且用户必须满足以下所有符合此用户条件的条件。

User in role: Asset
and
User in company: ACME EMEA
and
User in department: Development

答案 2 :(得分:0)

除了SNC.UserCriteriaLoader.getAllUserCriteria()之外,还有另一种更通用的方法:

SNC.UserCriteriaLoader.getUserCriteria(userId)

似乎返回指定用户的匹配用户标准列表(ArrayList<String>)。例如。

SNC.UserCriteriaLoader.getUserCriteria(gs.getUserID())

SNC.UserCriteriaLoader.getAllUserCriteria()

返回相同的结果。