我必须以编程方式为未明确添加到网站用户中的用户创建任务。不过,他有权参与任务列表,因为他属于已被授予这些权限的 AD 组。我可以通过 UI 将任务分配给用户;我如何通过代码来实现?
将任务分配给用户的公认方法是将任务的 AssignedTo
字段设置为指向该用户的 SPFieldUserValue
。除了在这种情况下无法完成,因为在 SharePoint 中找不到用户,只能找到他的组!出于显而易见的原因,将任务分配给整个团队不是一个好主意。我们的系统管理员断然拒绝将用户一个一个地添加到 Sharepoint,因为这会复制他们在 Active Directory 中的数据,而且通常很难管理。我该怎么办?
最佳答案
当用户对 SharePoint 进行身份验证时,会在配置文件存储中为他们创建一个条目,即使他们对该站点的权限来自 AD 组也是如此。
我通过向我的 AD 添加新用户 (TGroupsUser) 和组 (SPtestPermissions) 进行了快速测试,因此该用户之前不可能访问过我的网站。我将用户添加到该组,并授予该组对我的站点的“成员”权限。然后我用这个新用户向 SP 进行了身份验证。
为了表明用户是此 SPWeb 的一部分,我编写了一个快速 Web 部件来枚举 Web 上的用户。请注意,使用 SPWeb 的用户分为三组。所有用户、站点用户和用户。看这个link有关这些属性的完整描述。基本上,用户是网络上的用户。网站用户是网站集上的用户和组。所有用户是网站的所有用户,包括那些被授予直接权限或通过组授予然后访问该网站的用户。这是结果,减去系统帐户。
所有用户 SPSDEV\rross SPSDEV\sptest权限 SPSDEV\TGroupsUser
网站用户 SPSDEV\rross SPSDEV\sptest权限 SPSDEV\TGroupsUser
用户 SPSDEV\rross
由于此帐户 (TgroupsUser) 是网络用户集合的一部分,您可以将其视为直接添加到站点的用户。为了完成测试,我使用以下代码为 assignedTo 字段创建了一个任务。
TaskItem[SPBuiltInFieldId.AssignedTo] = web.SiteUsers.GetByEmail("myemail@domain.com");
这是分配给 TGroupsUser 的新任务的屏幕截图。
仅供引用 - 我需要在 Web 对象上使用 AllowUnsafeUpdates。
关于sharepoint-2010 - SharePoint - 如何将任务分配给不在系统中的用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6346282/