通过编程方式搜索特定的SharePoint用户
-
30-09-2019 - |
题
我有一种填充物需要指定人的信息。工作流以后将任务分配给这些人。我正在寻找的是一个人类选择者,例如SharePoint对用户字段的收集器,但是我可以在Infopath中使用。我已经设计了一个表格来执行此操作,其中填充物可以在名称或电子邮件中放置,并且该表格将列出网站的结果。
问题是,如果需要添加到表格中的人以前从未访问过此特定站点的收集,该怎么办。他们的帐户不会在Allusers列表中列出。
在对象模型中,我可以在哪里搜索能够使用SharePoint进行身份验证的用户?
解决方案
为什么不只是在Infopath中使用OTB ONE并将其配置为指向您的SharePoint环境?
如果您使用广告集成的运行苔藓,则如果启用了广告同步,则应自动检索域中的每个人。
其他提示
我认为这里的问题是,即使您确实找到了用户列表,如果用户信息列表中的用户不存在,则工作流程也不会触发任何操作。
如果用户在用户信息列表中不存在,那么您将无法通过SharePoint对象模型找到它们,因为SharePoint中不存在。您将不得不找到其他方式。
因此,基本上,这取决于如何在SharePoint服务器上配置身份验证:
如果您使用的是FBA,则可以使用SharePoint进行身份验证的用户必须存在于某个地方的SQL数据库中。 会员资格 将为您提供FBA会员提供者的钩子(无论是SQLMembershippRovider还是其他)。然后您可以使用类似的方法
Membership.Provider.GetUser(username)
查看用户是否存在。您也可以循环浏览用户,也可以找到所有现有的用户名,然后可以在选择者中显示这些用户。
如果您使用的是Windows身份验证,则必须在广告中查找潜在用户。这 DirectoryEntry 对象是您需要的。我想只有来自某个广告组的用户才能访问SharePoint?如果是这样,则将该组与DirectoryEntry对象隔离,循环浏览用户,您将为People Picker提供数据源。
正如我上面说的那样,任何一种方法都会为您提供可能的用户,但是如果用户尚未登录,它将无法使工作流程起作用。工作流只能与用户信息列表中确实存在的用户正确使用。
当某人选择SharePoint中不存在的用户时,您可能必须通过代码创建它。一种安全的方法是与 spweb.ensureuser.
检查指定的登录名是否属于该网站的有效用户,并且如果登录名不存在,则将其添加到网站上。
所以,真的,回答您的问题。您需要寻找它们可能来自的地方。