在ASP.Net 中使用实现windows登陆的方法.

来源:互联网 发布:黄金探测器软件下载 编辑:程序博客网 时间:2024/04/28 02:53
public bool Login(string UserName, string Password, string Domain){      string text1 = Domain.Trim();      string text2 = UserName.Trim();      text2 = text2.Replace("/", @"/");      int num1 = text2.IndexOf('//');      if (num1 != -1)      {            text1 = text2.Substring(0, num1);            text2 = text2.Substring(num1 + 1);      }      else      {            num1 = text2.IndexOf('@');            if (num1 != -1)            {                  text1 = text2.Substring(num1 + 1);                  text2 = text2.Substring(0, num1);            }      }      return this.authenticateUser(text2, Password.Trim(), text1);}
private bool authenticateUser(string UserName, string Password, string Domain){      bool flag1 = false;      try      {            int num1;            IntPtr ptr1;            if (!WindowsAuth.LogonUser(UserName, Domain, Password, 2, 0, out num1))            {                  return flag1;            }            ptr1 = new IntPtr(num1);            WindowsIdentity identity1 = new WindowsIdentity(ptr1);            WindowsPrincipal principal1 = new WindowsPrincipal(identity1);            HttpContext.Current.User = principal1;            FormsAuthentication.SetAuthCookie(principal1.Identity.Name, false);            FormsAuthentication.RedirectFromLoginPage(UserName, false);            flag1 = true;      }      catch (Exception)      {      }      return flag1;}
[DllImport("advapi32.dll")]public static extern bool LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, out int phToken);