代码之家  ›  专栏  ›  技术社区  ›  Daniel Revell

以编程方式搜索特定的SharePoint用户

  •  2
  • Daniel Revell  · 技术社区  · 15 年前

    我有一个填充程序需要指定人员的InfoPath表单。工作流稍后会将任务分配给这些人员。我要找的是一个人员选取器,就像SharePoint对用户字段的选取器一样,但我可以在InfoPath中使用。我已经设计了一个表单来完成这个任务,在这里填充者可以输入一个名字或电子邮件,表单将列出来自site.alluser组的结果。

    问题是,如果需要添加到表单中的人以前从未访问过此特定网站集,该怎么办?他们的账户不会被列入诱惑名单。

    在对象模型中,我可以在哪里搜索能够通过SharePoint身份验证的用户?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Tuff Moyrong    15 年前

    为什么不在InfoPath中使用OTB并将其配置为指向您的SharePoint环境?

    http://www.sharepointassist.com/2009/02/27/adding-a-contact-selectorpeople-picker-to-an-infopath-form/

    如果您正在运行带有广告集成的moss,那么如果启用了广告同步,它应该自动检索您域中的所有人。

        2
  •  1
  •   Hugo Migneron    15 年前

    我认为这里的问题是,即使您找到了用户列表,如果用户信息列表中不存在,工作流也不会触发任何操作。

    如果用户信息列表中不存在这些用户,则无法通过SharePoint对象模型找到它们,因为它们在SharePoint中不存在。你得另找办法。

    因此,基本上取决于如何在SharePoint服务器上配置身份验证:

    如果您使用的是FBA,那么可以使用SharePoint进行身份验证的用户必须存在于某个SQL数据库中。 Membership.Provider 将在您的FBA成员资格提供程序(无论它是sqlmembershipprovider还是其他什么)上给您一个钩子。然后你可以使用像

    Membership.Provider.GetUser(username)
    

    查看用户是否存在。您还可以循环访问您的用户或查找所有现有用户名,然后在人员选取器中显示这些用户名。

    如果您使用的是Windows身份验证,则必须在广告中查找潜在用户。这个 DirectoryEntry 对象就是你需要的。我想只有来自某个广告组的用户才能访问SharePoint?如果是这样,那么使用DirectoryEntry对象隔离该组,循环访问用户,您将拥有人员选择器的数据源。

    不过,正如我上面所说,任何一种方法都将为您提供可能的用户,但如果用户没有登录,它将不会使工作流工作。工作流只能与用户信息列表中确实存在的用户一起正常工作。

    当有人选择SharePoint中不存在的用户时,您可能需要通过代码来创建该用户。一个安全的方法是 SPWeb.EnsureUser .

    检查指定的登录名 名称属于的有效用户 网站,如果登录名 不存在,将其添加到Web 站点。站点。

    所以说真的,回答你的问题,什么都不知道。你需要寻找他们可能来自的地方。