/// <summary>
 /// 验证用户的身份和密码
 /// </summary>
 /// <param name="Organization">组织结构管理器</param>
 /// <param name="UserAlias">用户登录名</param>
 /// <param name="Password">用户登录密码</param>
 /// <param name="EnableADValidation">是否使用AD认证</param>
 /// <param name="ADPathes">AD地址</param>
 /// <returns>如果用户验证成功,则返回true,否则返回false</returns>
 public static bool Validate(
     OThinker.Organization.IOrganization Organization,
     string UserAlias,
     string Password,
     bool EnableADValidation,
     string ADPathes)
 {
     return(ValidateUser(Organization, UserAlias, Password, EnableADValidation, ADPathes) != null);
 }
 /// <summary>
 /// 验证用户的身份和密码
 /// </summary>
 /// <param name="Organization">组织结构管理器</param>
 /// <param name="UserAlias">用户登录名</param>
 /// <param name="Password">用户登录密码</param>
 /// <param name="EnableADValidation">是否使用AD认证</param>
 /// <param name="ADPathes">AD地址</param>
 /// <returns>如果用户验证成功,则返回User,否则返回null</returns>
 public static OThinker.Organization.User ValidateUser(
     OThinker.Organization.IOrganization Organization,
     string UserAlias,
     string Password,
     bool EnableADValidation,
     string ADPathes)
 {
     if (UserAlias == null)
     {
         return(null);
     }
     OThinker.Organization.User user = Organization.GetUserByCode(UserAlias);
     if (user == null || user.State == State.Inactive ||
         user.ServiceState == UserServiceState.Dismissed || user.IsVirtualUser)
     {// 虚拟用户、离职、禁用用户不允许登录
         return(null);
     }
     if (EnableADValidation && (!user.IsSystemUser || !user.IsAdministrator))
     {
         // 使用AD认证
         bool success = false;
         if (!string.IsNullOrEmpty(ADPathes))
         {
             string[] ads = ADPathes.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
             foreach (string ad in ads)
             {
                 success = IsAuthenticated(ad, UserAlias, Password);
                 if (success)
                 {
                     return(user);
                 }
             }
         }
     }
     else if (user.ValidatePassword(Password))
     {
         // 密码正确
         return(user);
     }
     return(null);
 }