.NET中通过域验证用户名和密码
2013-05-04 20:47
127 查看
类代码:
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System;
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Data;
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Configuration;
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Web;
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Web.Security;
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Web.UI;
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Web.UI.WebControls;
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Web.UI.WebControls.WebParts;
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Web.UI.HtmlControls;
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Runtime.InteropServices; //必要引用
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Security.Principal; //必要引用
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
/**//// <summary>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// UserLoginForDomain 的摘要说明
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 适用ASP.NET 2.0
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// Windows XP 调试成功
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 调用”advapi32.dll“win32 API
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
/// </summary>
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
public class UserLoginForDomain
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public UserLoginForDomain()
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
// TODO: 在此处添加构造函数逻辑
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
【用户登录域】方法#region【用户登录域】方法
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public const int LOGON32_LOGON_INTERACTIVE = 2;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public const int LOGON32_PROVIDER_DEFAULT = 0;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
WindowsImpersonationContext impersonationContext;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[DllImport("advapi32.dll", CharSet = CharSet.Auto)]
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public static extern int LogonUser(String lpszUserName,
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
String lpszDomain,
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
String lpszPassword,
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int dwLogonType,
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int dwLogonProvider,
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
ref IntPtr phToken);
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[DllImport("advapi32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, SetLastError = true)]
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public extern static int DuplicateToken(IntPtr hToken,
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int impersonationLevel,
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
ref IntPtr hNewToken);
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
/**//// <summary>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 输入用户名、密码、登录域判断是否成功
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <example>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// if (impersonateValidUser(UserName, Domain, Password)){}
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </example>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="userName">账户名称,如:string UserName = UserNameTextBox.Text;</param>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="domain">要登录的域,如:string Domain = DomainTextBox.Text;</param>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="password">账户密码, 如:string Password = PasswordTextBox.Text;</param>
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <returns>成功返回true,否则返回false</returns>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public bool impersonateValidUser(String userName, String domain, String password)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
WindowsIdentity tempWindowsIdentity;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
IntPtr token = IntPtr.Zero;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
IntPtr tokenDuplicate = IntPtr.Zero;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (LogonUser(userName, domain, password, LOGON32_LOGON_INTERACTIVE,
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
LOGON32_PROVIDER_DEFAULT, ref token) != 0)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (DuplicateToken(token, 2, ref tokenDuplicate) != 0)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
impersonationContext = tempWindowsIdentity.Impersonate();
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (impersonationContext != null)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return true;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
else
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return false;
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
else
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return false;
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
else
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return false;
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public void undoImpersonation()
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
impersonationContext.Undo();
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
#endregion
前台事例:
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
【用户登录域】示例#region【用户登录域】示例
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default6.aspx.cs" Inherits="Default6" %>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
<html xmlns="http://www.w3.org/1999/xhtml" >
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
<head id="Head1" runat="server">
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
<title>ASP.NET模拟登录验证</title>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
</head>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
<body>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
<form id="form1" runat="server">
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
<div>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
账户:<asp:TextBox ID="UserNameTextBox" runat="server"></asp:TextBox><br />
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
密码:<asp:TextBox ID="PasswordTextBox" runat="server"></asp:TextBox><br />
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
域名:<asp:TextBox ID="DomainTextBox" runat="server"></asp:TextBox><br />
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
<asp:Button ID="OKButton" runat="server" OnClick="OKButton_Click" Text="Button" /></div>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
</form>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
</body>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
</html>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
=========================================================================
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
protected void OKButton_Click(object sender, EventArgs e)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string UserName = UserNameTextBox.Text;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string Domain = DomainTextBox.Text;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string Password = PasswordTextBox.Text;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
UserLoginForDomain CheckUserLogin = new UserLoginForDomain();
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (CheckUserLogin.impersonateValidUser(UserName, Domain, Password))
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Response.Write(UserNameTextBox.Text + " is OK");
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
else
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Response.Write(UserNameTextBox.Text + " is Error");
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
#endregion
http://www.cnblogs.com/Hdsome/archive/2010/12/08/1227575.html
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System;
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Data;
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Configuration;
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Web;
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Web.Security;
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Web.UI;
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Web.UI.WebControls;
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Web.UI.WebControls.WebParts;
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Web.UI.HtmlControls;
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Runtime.InteropServices; //必要引用
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Security.Principal; //必要引用
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
/**//// <summary>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// UserLoginForDomain 的摘要说明
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 适用ASP.NET 2.0
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// Windows XP 调试成功
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 调用”advapi32.dll“win32 API
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
/// </summary>
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
public class UserLoginForDomain
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public UserLoginForDomain()
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
// TODO: 在此处添加构造函数逻辑
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
【用户登录域】方法#region【用户登录域】方法
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public const int LOGON32_LOGON_INTERACTIVE = 2;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public const int LOGON32_PROVIDER_DEFAULT = 0;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
WindowsImpersonationContext impersonationContext;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[DllImport("advapi32.dll", CharSet = CharSet.Auto)]
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public static extern int LogonUser(String lpszUserName,
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
String lpszDomain,
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
String lpszPassword,
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int dwLogonType,
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int dwLogonProvider,
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
ref IntPtr phToken);
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[DllImport("advapi32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, SetLastError = true)]
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public extern static int DuplicateToken(IntPtr hToken,
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int impersonationLevel,
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
ref IntPtr hNewToken);
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
/**//// <summary>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 输入用户名、密码、登录域判断是否成功
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <example>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// if (impersonateValidUser(UserName, Domain, Password)){}
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </example>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="userName">账户名称,如:string UserName = UserNameTextBox.Text;</param>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="domain">要登录的域,如:string Domain = DomainTextBox.Text;</param>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="password">账户密码, 如:string Password = PasswordTextBox.Text;</param>
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <returns>成功返回true,否则返回false</returns>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public bool impersonateValidUser(String userName, String domain, String password)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
WindowsIdentity tempWindowsIdentity;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
IntPtr token = IntPtr.Zero;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
IntPtr tokenDuplicate = IntPtr.Zero;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (LogonUser(userName, domain, password, LOGON32_LOGON_INTERACTIVE,
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
LOGON32_PROVIDER_DEFAULT, ref token) != 0)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (DuplicateToken(token, 2, ref tokenDuplicate) != 0)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
impersonationContext = tempWindowsIdentity.Impersonate();
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (impersonationContext != null)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return true;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
else
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return false;
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
else
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return false;
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
else
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return false;
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public void undoImpersonation()
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
impersonationContext.Undo();
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
#endregion
前台事例:
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
【用户登录域】示例#region【用户登录域】示例
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default6.aspx.cs" Inherits="Default6" %>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
<html xmlns="http://www.w3.org/1999/xhtml" >
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
<head id="Head1" runat="server">
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
<title>ASP.NET模拟登录验证</title>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
</head>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
<body>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
<form id="form1" runat="server">
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
<div>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
账户:<asp:TextBox ID="UserNameTextBox" runat="server"></asp:TextBox><br />
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
密码:<asp:TextBox ID="PasswordTextBox" runat="server"></asp:TextBox><br />
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
域名:<asp:TextBox ID="DomainTextBox" runat="server"></asp:TextBox><br />
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
<asp:Button ID="OKButton" runat="server" OnClick="OKButton_Click" Text="Button" /></div>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
</form>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
</body>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
</html>
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
=========================================================================
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
protected void OKButton_Click(object sender, EventArgs e)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string UserName = UserNameTextBox.Text;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string Domain = DomainTextBox.Text;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string Password = PasswordTextBox.Text;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
UserLoginForDomain CheckUserLogin = new UserLoginForDomain();
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (CheckUserLogin.impersonateValidUser(UserName, Domain, Password))
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Response.Write(UserNameTextBox.Text + " is OK");
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
else
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Response.Write(UserNameTextBox.Text + " is Error");
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
#endregion
http://www.cnblogs.com/Hdsome/archive/2010/12/08/1227575.html
相关文章推荐
- 很好用的.NET中通过域验证用户名和密码
- Qt5.9Creator登录界面函数总结(通过连接远程服务器数据库MySql5.7.17进行登录用户名和密码验证)
- 通过CouchDB-Python连接带有用户名/密码验证的数据库
- csrf攻击过程 csrf攻击说明 1.用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A; 2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站
- CXF 通过用户名和密码进行验证
- CAS SSO研究二:cas_server通过查询数据库验证用户名、密码正确性
- java通过url调用远程接口返回json数据,有用户名和密码验证
- SSO单点登录 cas_server通过查询数据库验证用户名、密码正确性
- SharePoint Host Header输入用户名密码无法通过验证的解决办法
- 为什么每个请求都要有用户名密码呢,那不是每次都要查询一下了,token,表示这个用户已经验证通过了,在token有效期内,只需要判断token是否有效就可以了
- HTTP 和 SOAP 标头 来传递用户名密码 验证webservice用户认证
- 使用用户名和密码验证apache登录
- SVN使用MySQL验证用户名密码(HTTP)
- 如果ftp服务器使用windows下IIS创建,通过资源管理器登陆ftp服务器,输入正确的用户名和密码,点击登陆按钮没有反应
- postgresql数据库用户名密码验证失败
- 客户端验证用户名和密码
- IIS访问Reports目录需要用户名密码验证问题
- 使用JDBC连接MySQL数据库 用户名密码验证
- Java登录页面实时验证用户名密码和动态验证码
- perl 操作redis 数据库 带用户名和密码验证,选择数据库0.1.2