public static bool Verify(string userName, string password) { // 默认两种验证方式 var domain = string.Format("{0}", WFCorePublicCodeHelper.GetPublicCode("Domain", "Authentication Method", "Domain,Password")).ToLower(); if (domain.Contains("password")) { var user = UserLoader.GetUserByName(userName); if (user != null) { var uesrHash = HashHelper.GenerateUserHash(userName, password); if (uesrHash == user.Password) { return(true); } } } if (domain.Contains("domain")) { if (IsValidDomainUser(userName, password)) { return(true); } } return(false); }
/// <summary> /// 域验证 /// </summary> /// <param name="user"></param> /// <param name="pwd"></param> /// <returns></returns> public static bool IsValidDomainUser(string user, string pwd) { const int LOGON32_LOGON_INTERACTIVE = 2; //通过网络验证账户合法性 const int LOGON32_PROVIDER_DEFAULT = 0; //使用默认的Windows 2000/NT NTLM验证方 IntPtr tokenHandle = new IntPtr(0); tokenHandle = IntPtr.Zero; string domainName = WFCorePublicCodeHelper.GetPublicCode("Domain", "Domain", string.Empty); string domainAccount = user; //域帐号 如:administrator string domainPassword = pwd; //密码 bool checkok = LogonUser(domainAccount, domainName, domainPassword, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref tokenHandle); return(checkok); }