好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#实现的WINDOWS登录功能示例

本文实例讲述了C#实现的WINDOWS登录功能。分享给大家供大家参考,具体如下:

?

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Runtime.InteropServices;

using System.Security.Principal;

namespace yutest

{

   public partial class _Default : System.Web.UI.Page

   {

     [DllImport( "advapi32.dll" , CharSet = CharSet.Auto)]

     public static extern bool LogonUser( string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, out int phToken);

     protected void Page_Load( object sender, EventArgs e)

     {

       string aaa = System.Threading.Thread.CurrentPrincipal.Identity.Name;

       //string bbb = System.Threading.Thread.CurrentPrincipal.Identity.n;

       //System.Environment.UserDomainName

       //System.Environment.UserName

     }

     protected void Button1_Click( object sender, System.EventArgs e)

     {

       //验证用户的输入是否为空

       if (tDomain.Text.Trim().Length > 0 && tUserName.Text.Trim().Length > 0&& tPassword.Text.Trim().Length > 0)

       {  //调用函数Login(string UserName, string Password, string Domain)

         //实现Windows登录

         if (Login(tUserName.Text.Trim(), tPassword.Text.Trim(),tDomain.Text.Trim()) == true )

         {  //显示登录成功信息

           LoginMsg.Text = "登录成功!!!" ;

           LoginMsg.Visible = true ;

           return ;

         }

         else

         {  //显示登录失败信息

           LoginMsg.Text = "登录失败,请重新输入用户名称、密码及其系统域名!!!" ;

           LoginMsg.Visible = true ;

         }

       }

     }

     private 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);

         }

       }

       //调用函数AuthenticateUser()实现用户Windows登录

       return AuthenticateUser(text2, Password.Trim(), text1);

     }

     private bool AuthenticateUser( string UserName, string Password, string Domain)

     {       //设置用户登录成功的标志

       bool flag1 = false ;

       try

       {

         int num1; IntPtr ptr1;

         //调用Windows登录的API

         if (!LogonUser(UserName, Domain, Password, 2, 0, out num1))

         {  //返回登录结果

           return flag1;

         }

         //调用.NET中的Windows登录

         ptr1 = new IntPtr(num1);

         WindowsIdentity identity1 = new WindowsIdentity(ptr1);

         WindowsPrincipal principal1 = new WindowsPrincipal(identity1);

         HttpContext.Current.User = principal1;

         //设置系统Cookie和重定向页面

         FormsAuthentication.SetAuthCookie(principal1.Identity.Name, false );

         FormsAuthentication.RedirectFromLoginPage(UserName, false );

         flag1 = true ;

       }

       catch (Exception) { }

       return flag1;

     }

   }

}

希望本文所述对大家C#程序设计有所帮助。

dy("nrwz");

查看更多关于C#实现的WINDOWS登录功能示例的详细内容...

  阅读:44次