如何识别非人类用户
本文关键字:非人类 用户 识别 何识别 | 更新日期: 2023-09-27 17:54:23
列出系统中的所有用户,我注意到其中一些是系统用户,并且根本没有例如工作时间。目前,我只是列出它们并将其排除在循环之外,因为这是一种Q&D方法,我更喜欢正确的方法。
我没有在systemuser实体上找到任何具体的信息,告诉我某个是真实的配置文件(即在Office 365门户中创建的)还是默认提供我的MS的配置文件。
Q&D代码如下:
QueryExpression userQuery = new QueryExpression { EntityName = "systemuser", ... };
IEnumerable<Entity> users = service.RetrieveMultiple(userQuery).Entities;
IEnumerable<String> automatics = new[] { "INTEGRATION", "Support User", "SYSTEM" };
foreach (Entity user in users.Where(element
=> !automatics.Contains(element.GetAttributeValue<String>("fullname")))) { ... }
第二个最好的解决方案是,如果没有办法确定谁在自动列表中,谁是真正的家伙,那就是制作一个详尽的例外情况综合列表。再一次,我的google-fu失败了,因为我没有找到关于实体systemuser自动创建实例的完整列表的任何文档。
检查CreatedBy
字段;用户SYSTEM
和INTEGRATION
为NULL
。对于CRM管理员用户,该字段也是NULL
,因此,如果admin用户正在被人类积极使用,则应该考虑排除该用户。
FilterExpression humanFilter = new FilterExpression();
humanFilter.AddCondition(new ConditionExpression("createdby", ConditionOperator.NotNull));
if (retrieveAdminUser)
{
humanFilter.FilterOperator = LogicalOperator.Or;
humanFilter.AddCondition(
new ConditionExpression("domainname", ConditionOperator.Equal, "admin@crm"));
}
userQuery.Criteria.AddFilter(humanFilter);