{"MaxStorage"}));
this.PasswordAge=Convert.ToInt32(user.Invoke("Get", new object[]
{"PasswordAge"}));
this.HomeDirectory=Convert.ToString(user.Invoke("Get", new object[]
{"HomeDirectory"}));
this.LoginScript=Convert.ToString(user.Invoke("Get", new object[]
{"LoginScript"}));
this.HomeDirDrive=Convert.ToString(user.Invoke("Get", new object[]
{"HomeDirDrive"}));
this.userDirEntry=user;
}catch(Exception e) {
throw(new Exception("Could not load user from given DirectoryEntry"));
}
}
public DSUser(string Username, string Password, string DomainName) {
domainName=DomainName;
if(domainName=="" || domainName==null) domainName=Environment.MachineName;
username=Username;
password=Password;
}
private object groups=null;
public object Groups{get{return groups;} set{groups=value;}}
}
}
图1.2 User对象
我们的用户对象有二个缺省的构造器 。第一个用来用一个给定的DirectoryEntry对象对我们的用户进行初始化,它将使用Invoke方法从对象中“获取”用户的属性 。
第二个构造器用来创建一个新的用户 。我们只需要向它传递三个参数,在用来创建新用户时,它就会创建一个新的DSUser对象 。需要注意的是,由于没有完成任何的AD操作,因此我们并没有在AD中创建真正的用户 。
数据访问层(DAL)
下一步就是创建AD的DAL封装了,下面的一些代码是分步骤完成的完整的UserAdmin DAL代码 。
我们首先创建并初始化在UserAdmin类中所需要的代码:
#缺省属性的初始化
//我们的错误日志设备,应当尽量保持简单,避免代码膨胀过大
System.Text.StringBuilder errorLog = new System.Text.StringBuilder();
private System.Boolean error=false;
public System.Boolean Error{get{return error;}}
public string ErrorLog{get{return errorLog.ToString();}}
//设置缺省的属性
private string loginPath="WinNT://" Environment.MachineName ",computer";
private string domainName=null;
private string loginUsername=null;
private string loginPassword=null;
private System.DirectoryServices.AuthenticationTypes authenticationType =
System.DirectoryServices.AuthenticationTypes.None;
private System.DirectoryServices.DirectoryEntry AD=null;
private System.Boolean connected=false;
#endregion
图1.3 缺省属性的初始化
注意我们是如何将LoginPath硬拷贝为WinNT提供商的 。为了使DAL能够与任何其他AD服务提供商配合,这一点必须进行改变 。另外需要注意的是,我使用了System.Text.StringBuilder对象来保存错误日志,从而简化了错误处理过程 。在有错误发生的情况下,系统会简单地添加一条日志,Boolean型变量error将会被设置为“真”值 。下面的代码是我们设计的类的构造器:(图1.4)
#region .ctor"s
public UserAdmin() {
Connect();
}
/// <摘要>
/// 在需要的时候,使我们能够创建UserAdmin类
/// 摘要>
///
///
///
///
public UserAdmin(string LoginUsername, string LoginPassword,
System.DirectoryServices.AuthenticationTypes AuthenticationType,
string DomainName) {
loginUsername=LoginUsername;
loginPassword=LoginPassword;
authenticationType=AuthenticationType;
if(DomainName=="" || DomainName==null)
DomainName=System.Environment.UserDomainName;
domainName=DomainName;
Connect();
}
/// <摘要>
/// 获得UserAdmin类的另一种方式,可以指定另外一个LoginPath,例如LDAP或IIS 。
/// 摘要>
///
///
///
///
/// 【1 通过.NET Framework访问活动目录】
public UserAdmin(string LoginPath, string LoginUsername, string LoginPassword,
System.DirectoryServices.AuthenticationTypes AuthenticationType,
string DomainName) {
loginPath=LoginPath;
loginUsername=LoginUsername;
loginPassword=LoginPassword;
- 手机上怎么看银行卡余额 怎么通过手机查询银行卡余额
- 苹果手表怎么睡眠监测
- 极速幻境第四章路线怎么通过
- 乐花卡为什么未通过审核
- Win 2003中配置ASP.net环境
- 驯服Windows Server 2003
- 快速学粤语方法
- pr怎么输出最高画质
- 钉钉团队号在哪里?钉钉通过团队号加入团队的技巧
- vivo手机的隐藏功能在哪里设置
