【问题标题】:Search for a particular SharePoint user programmatically以编程方式搜索特定 SharePoint 用户
【发布时间】:2010-11-10 14:35:59
【问题描述】:

我有一个 InfoPath 表单,填写者需要指定人员。工作流稍后将任务分配给这些人。我正在寻找的是一个人员选择器,就像 SharePoint 为用户字段提供的那样,但我可以在 InfoPath 中使用它。我已经设计了一个表单来执行此操作,填写者可以输入姓名或电子邮件,表单将列出来自 site.allusers 组的结果。

问题是,如果需要添加到表单中的人以前从未访问过此特定网站集怎么办。他们的帐户不会列在 AllUsers 列表中。

我可以在对象模型的哪个位置搜索能够使用 SharePoint 进行身份验证的用户?

【问题讨论】:

    标签: c# sharepoint sharepoint-2007 infopath infopath-2007


    【解决方案1】:

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

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

    如果您正在运行带有 AD 集成的 MOSS,那么如果启用了 AD 同步,它应该会自动检索您域中的每个人。

    【讨论】:

    • 其实我今天才发现这个控件。有趣的是,如果你的谷歌搜索不正确,那么很容易错过这样的事情。
    【解决方案2】:

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

    如果用户信息列表中不存在这些用户,那么您将无法通过 SharePoint 对象模型找到他们,因为它们在 SharePoint 中不存在。您将不得不通过其他方式找到它们。

    所以基本上,这取决于您的 SharePoint 服务器上如何配置身份验证:

    如果您使用 FBA,则可以使用 SharePoint 进行身份验证的用户必须存在于 SQL 数据库中的某个位置。 Membership.Provider 将为您提供 FBA 会员资格提供程序(无论是 SqlMembershipProvider 还是其他)。然后,您可以使用

    之类的方法
    Membership.Provider.GetUser(username)
    

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

    如果您使用 Windows 身份验证,则必须查看您的 AD 以找到潜在用户。 DirectoryEntry 对象是您所需要的。我想只有来自某个 AD 组的用户才能访问 SharePoint?如果是这样,则使用 DirectoryEntry 对象隔离该组,遍历用户,您将获得人员选择器的数据源。

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

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

    检查是否指定登录 名称属于 网站,如果登录名是 尚不存在,将其添加到 Web 站点.站点。

    真的,要回答你的问题,无处可去。你需要寻找他们可能来自哪里。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-25
      • 2013-08-07
      • 2013-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      • 2022-12-18
      相关资源
      最近更新 更多