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;
}
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)
{
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);
}
}
return
AuthenticateUser(text2, Password.Trim(), text1);
}
private
bool
AuthenticateUser(
string
UserName,
string
Password,
string
Domain)
{
bool
flag1 =
false
;
try
{
int
num1; IntPtr ptr1;
if
(!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;
}
}
}