MOSS SDK学习(3)

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

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

演示效果:

在ListBox中列出AD中的用户,当点击按钮时把用户添加成MOSS中的用户。

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

None.gif          private   void  LoadADInfo()
ExpandedBlockStart.gif        
{
InBlock.gif            
try
ExpandedSubBlockStart.gif            
{
InBlock.gif                DirectoryEntry de 
= new DirectoryEntry();
InBlock.gif
InBlock.gif                de.Path 
= "LDAP://192.168.1.4/CN=Users,DC=*****,DC=*****";
InBlock.gif                de.Username 
= "*****\\*****";
InBlock.gif                de.Password 
= "*****";
InBlock.gif
InBlock.gif                
//通过搜索查出所有的人员
InBlock.gif
                SearchResultCollection results;
InBlock.gif                DirectorySearcher srch 
= new DirectorySearcher(de);
InBlock.gif                srch.Filter 
= "(&(&(objectCategory=person)(objectClass=user)))";
InBlock.gif                results 
= srch.FindAll();
InBlock.gif
InBlock.gif                
foreach (SearchResult sr in results)
ExpandedSubBlockStart.gif                
{
InBlock.gif                    DirectoryEntry objDE 
= sr.GetDirectoryEntry();
InBlock.gif                    
string userName = objDE.Name.Substring(3);
InBlock.gif                    listBox1.Items.Add(userName);
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

InBlock.gif            
catch (Exception ex)
ExpandedSubBlockStart.gif            
{
InBlock.gif                MessageBox.Show(ex.Message);
ExpandedSubBlockEnd.gif            }

InBlock.gif
ExpandedBlockEnd.gif        }

这里注意的是连接AD时的Path后面的两个DC表示AD的域名,
CNCommon Name(公用名称)的缩写。 AD中的Users

OU Organizational Unit( 组织单元 ) 的缩写 AD 中的 Domain Controllers

接下来通过对象模型把用户加到MOSS中,MOSS2007中的用户、权限部分的对象模型有了很大的修改,最主要就是不能直接给用户赋予权限,必须通过角色,然后把用户和角色关联来授权,具体代码如下:
None.gif              string  strUserName  =  listBox1.SelectedItem  as   string ;
None.gif
None.gif            
// 添加用户到网站
None.gif
            SPWeb rootWeb  =  _siteCollection.OpenWeb( " / " );
None.gif            SPUserCollection users 
=  rootWeb.AllUsers;
None.gif            users.Add(
" *****\\ "   +  strUserName,  "" "" "" );
None.gif
None.gif            
// 给用户赋予权限
None.gif
            SPRoleDefinitionCollection roles  =  rootWeb.RoleDefinitions;
None.gif            SPRoleDefinition role 
=  roles[ " 读取 " ];
None.gif
None.gif            SPUser user 
=  users[ " *****\\ "   +  strUserName];
None.gif
None.gif            SPRoleAssignment raUser 
=   new  SPRoleAssignment(user);
None.gif            raUser.RoleDefinitionBindings.Add(role);
None.gif            rootWeb.RoleAssignments.Add(raUser);
None.gif
None.gif            MessageBox.Show(
" 添加成功 " );
None.gif
None.gif            
// 同样使用SPGroup也可以把用户加入到已经存在的组中去
None.gif
我这边就是写死的赋予读取的权限,当然也可以把所有的角色列出来,自由选择。

演示例子下载



    本文转自永春博客园博客,原文链接:http://www.cnblogs.com/firstyi/archive/2007/03/20/681441.html,如需转载请自行联系原作者


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值