将用户添加到 MOSS 2007 (SharePoint) 站点和组






3.82/5 (4投票s)
2007 年 10 月 24 日
2分钟阅读

92517
本文介绍了一种将用户添加到 MOSS 2007 (SharePoint) 的简单方法
引言
在一个最近的 MOSS 2007 项目中,我们的团队需要创建一个统一的用户创建向导,将用户信息添加到我们的数据库,然后将新用户添加到 SharePoint 中的站点/组。我查阅了许多资料,发现有不同的实现方法,但发现其中“还有更多需要注意的地方”。本文介绍了我的方法,希望对您有所帮助。
Using the Code
大部分情况下,我只是列出在这个项目中使用的代码片段,并简要说明其作用。这很简单,但有一些微妙之处。我的方法是首先查找用户。如果用户已经在站点集合中,我只需要将其添加到组中。否则,我需要先将用户添加到站点,然后再添加到组。首先,您需要引用 Microsoft.SharePoint
using Microsoft.SharePoint;
第一个函数尝试返回一个用户。您首先要查找,以确保用户当前不在站点集合中。在我的代码中,如果 GetSPUser
返回 null
,那么我知道我需要创建用户。您可能希望以不同的方式处理异常。为了清晰起见,我已删除我们的异常处理例程。
private SPUser GetSPUser(string strLoginName, string strSiteURL)
{
SPUser spReturn = null;
SPSite spSite = null;
SPWeb spWeb = null;
try
{
//Open the ShrePoint site
spSite = new SPSite(strSiteURL);
spWeb = spSite.OpenWeb();
//Check to see if user exists
spReturn = spWeb.AllUsers[txbUser.Text];
}
catch(Exception)
{
}
finally
{
spWeb.Close();
spSite.Close();
}
return spReturn;
}
现在,如果 GetSPUser
返回 null
,那么我们必须在站点集合中创建用户。这里重要的是 SPRoleAssignment
和 SPRoleDefinition
。这些应该设置为正确创建用户。您必须告诉 SharePoint 新用户具有什么访问级别。在这个示例中,我只是使用 Contribute
。您可能希望将其设为参数或使用不同的级别。请注意,我没有调用 spWeb.Users.Add()
,因为这不需要。当您添加角色定义时,它也会添加用户。
private SPUser CreateUser(string strLoginName, string strEMail,
string strName, string strNotes, string strSiteURL)
{
SPUser spReturn = null;
SPSite spSite = null;
SPWeb spWeb = null;
try
{
//Open the SharePoint site
spSite = new SPSite(strSiteURL);
spWeb = spSite.OpenWeb();
//Assign role and add user to site
SPRoleAssignment spRoleAssignment =
new SPRoleAssignment(strLoginName, strEMail, strName, strNotes);
//Using Contribute, might need high access
SPRoleDefinition spSPRoleDefinition =
spWeb.RoleDefinitions["Contribute"];
spRoleAssignment.RoleDefinitionBindings.Add(spSPRoleDefinition);
spWeb.RoleAssignments.Add(spRoleAssignment);
//Update site
spWeb.Update();
spReturn = spWeb.AllUsers[strLoginName];
}
catch(Exception)
{
}
finally
{
spWeb.Close();
spSite.Close();
}
return spReturn;
}
整合
这是主函数中的代码。再次说明,打开站点,获取或创建用户,然后添加到组。
//Open Site
SPSite spSite = new SPSite(strSiteURL);
SPWeb spWeb = spSite.OpenWeb();
//Get or create user
SPUser spUser = GetSPUser(strLoginName, strSiteURL);
if(spUser == null)
{
spUser = CreateUser(strLoginName, strEMail, strName, strNotes, strSiteURL);
}
//Open group
SPGroup spGroup = spWeb.SiteGroups[strGroup];
//Add and update group with new user
spGroup.AddUser(spUser.LoginName, spUser.Email, spUser.Name,
"Added by UserControl");
spGroup.Update();
关注点
总的来说,SharePoint MOSS 2007 是一个非常强大的平台,但有些事情似乎没有按预期工作。希望这能帮助任何尝试将用户添加到站点或组的自动化过程的人。
历史
- 2007 年 10 月 24 日 - 初始版本