SharePoint - 如何将任务分配给不在系统中的用户?

时间:2011-06-14 15:44:12

标签: sharepoint-2010 user-accounts

我必须以编程方式为未在站点用户中明确添加的用户创建任务。但是,他有权为任务列表做出贡献,因为他属于已被授予这些权限的AD组。我可以通过UI将任务分配给用户;我怎么通过代码来做呢?

向用户分配任务的可接受方法是将任务的AssignedTo字段设置为指向该用户的SPFieldUserValue。除了在这种情况下无法完成,因为在SharePoint中找不到用户,只有他的组!由于显而易见的原因,将任务分配给整个组是一个坏主意。我们的系统管理员断然拒绝将用户逐个添加到Sharepoint,因为这会复制他们在Active Directory中拥有的数据,并且通常很难管理。我该怎么办?

1 个答案:

答案 0 :(得分:0)

当用户向SharePoint进行身份验证时,即使他们对该网站的权限来自AD组,也会在配置文件存储中为他们创建一个条目。

我通过向我的AD添加新用户(TGroupsUser)和组(SPtestPermissions)进行了快速测试,因此之前用户无法访问我的网站。我将用户添加到组中,并将组“成员”权限授予我的网站。然后,我使用这个新用户对SP进行了身份验证。

为了表明用户是这个SPWeb的一部分,我写了一个快速的webpart来枚举网络上的用户。请注意,SPWeb有三组用户。所有用户,站点用户和用户。有关这些属性的完整说明,请参阅此link。基本上,用户是网络上的用户。站点用户是网站集上的用户和组。所有用户都是该站点的所有用户,包括那些被授予直接权限或通过组授予的用户,然后访问该站点。以下是结果,减去系统帐户。

所有用户 SPSDEV \ rross SPSDEV \ sptestpermissions SPSDEV \ TGroupsUser

网站用户 SPSDEV \ rross SPSDEV \ sptestpermissions SPSDEV \ TGroupsUser

用户 SPSDEV \ rross

由于此帐户(TgroupsUser)是Web用户集合的一部分,因此您可以像直接添加到站点的用户一样对待。为了完成测试,我使用以下代码为assignedTo字段创建了一个任务。

TaskItem[SPBuiltInFieldId.AssignedTo] = web.SiteUsers.GetByEmail("myemail@domain.com");

以下是分配给TGroupsUser的新任务的屏幕截图。 enter image description here

仅供参考 - 我需要在网络对象上使用AllowUnsafeUpdates。