65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.82/5 (4投票s)

2007 年 10 月 24 日

2分钟阅读

viewsIcon

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 日 - 初始版本
© . All rights reserved.