MOSS SDK学习(3)

MOSS中的认证方式可以使用集成Windows AD的认证,也可以使用Form形式的认证。改成Form的方法网上已经有了很多例子,不过相对于AD的认证,Form形式还是有一定的不足之处。

这个例子主要功能是列出AD中所有的用户,然后可以选择一些用户加入MOSS中,作为MOSS的用户来登录。

演示效果:
MOSS SDK学习(3)
在ListBox中列出AD中的用户,当点击按钮时把用户添加成MOSS中的用户。

首先,需要取得AD中的用户,这里使用的是LADP的方式,需要添加命名空间:
   using System.DirectoryServices;
然后取得用户:

         private   void  LoadADInfo()
        
{
            
try
            
{
                DirectoryEntry de 
= new DirectoryEntry();

                de.Path 
= "LDAP://192.168.1.4/CN=Users,DC=*****,DC=*****";
                de.Username 
= "*****\\*****";
                de.Password 
= "*****";

                
//通过搜索查出所有的人员
                SearchResultCollection results;
                DirectorySearcher srch 
= new DirectorySearcher(de);
                srch.Filter 
= "(&(&(objectCategory=person)(objectClass=user)))";
                results 
= srch.FindAll();

                
foreach (SearchResult sr in results)
                
{
                    DirectoryEntry objDE 
= sr.GetDirectoryEntry();
                    
string userName = objDE.Name.Substring(3);
                    listBox1.Items.Add(userName);
                }

            }

            
catch (Exception ex)
            
{
                MessageBox.Show(ex.Message);
            }


        }

这里注意的是连接AD时的Path后面的两个DC表示AD的域名,
CNCommon Name(公用名称)的缩写。 AD中的Users
OU
Organizational Unit(组织单元)的缩写, AD中的Domain Controllers

接下来通过对象模型把用户加到MOSS中,MOSS2007中的用户、权限部分的对象模型有了很大的修改,最主要就是不能直接给用户赋予权限,必须通过角色,然后把用户和角色关联来授权,具体代码如下:

             string  strUserName  =  listBox1.SelectedItem  as   string ;

            
// 添加用户到网站
            SPWeb rootWeb  =  _siteCollection.OpenWeb( " / " );
            SPUserCollection users 
=  rootWeb.AllUsers;
            users.Add(
" *****\\ "   +  strUserName,  "" "" "" );

            
// 给用户赋予权限
            SPRoleDefinitionCollection roles  =  rootWeb.RoleDefinitions;
            SPRoleDefinition role 
=  roles[ " 读取 " ];

            SPUser user 
=  users[ " *****\\ "   +  strUserName];

            SPRoleAssignment raUser 
=   new  SPRoleAssignment(user);
            raUser.RoleDefinitionBindings.Add(role);
            rootWeb.RoleAssignments.Add(raUser);

            MessageBox.Show(
" 添加成功 " );

            
// 同样使用SPGroup也可以把用户加入到已经存在的组中去
我这边就是写死的赋予读取的权限,当然也可以把所有的角色列出来,自由选择。

演示例子下载

你可能感兴趣的:(sdk)