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

问题描述 投票:2回答:3

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

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

  1. 检查用户是否存在于用户条件用户列表中
  2. 然后,如果先前的测试失败,请检查用户角色列表中是否存在用户角色
  3. 然后,如果先前的测试失败,检查部门....等等

或者是否有开箱即用的东西为我执行这些检查?我想应该有一些方法,但我在官方维基或文档中找不到任何相关的东西

permissions servicenow
3个回答
1
投票

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

SNC.UserCriteriaLoader.getAllUserCriteria()

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

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


0
投票

我相信您正在寻找的是Match All复选框,请查看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 - 选中Match All

enter image description here

在此示例中,将选中“匹配所有”,并且用户必须满足以下所有条件,它们才是此用户标准的一部分。

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

0
投票

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

SNC.UserCriteriaLoader.getUserCriteria(userId)

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

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

SNC.UserCriteriaLoader.getAllUserCriteria()

返回相同的结果。

© www.soinside.com 2019 - 2024. All rights reserved.