原文:
Asp.Net2.0下C#环境 Login控件实现用户登录
一、前台显示效果
二、前台代码
<
asp:Login
ID
="Login1"
runat
="server"
BackColor
="#F7F7DE"
BorderColor
="#CCCC99"
BorderStyle
="Solid"
BorderWidth ="1px" Font-Names ="Verdana" Font-Size ="10pt" OnAuthenticate ="Login1_Authenticate" >
< TitleTextStyle BackColor ="#6B696B" Font-Bold ="True" ForeColor ="White" />
< LayoutTemplate >
< table border ="0" cellpadding ="1" cellspacing ="0" style ="border-collapse: collapse" >
< tr >
< td >
< table border ="0" cellpadding ="0" >
< tr >
< td align ="center" colspan ="2" style ="font-weight: bold; color: white; background-color: #6b696b" >
用户登录 </ td >
</ tr >
< tr >
< td align ="right" >
< asp:Label ID ="UserNameLabel" runat ="server" AssociatedControlID ="UserName" > 用户名: </ asp:Label ></ td >
< td >
< asp:TextBox ID ="UserName" runat ="server" CssClass ="STYLE1" ></ asp:TextBox >
< asp:RequiredFieldValidator ID ="UserNameRequired" runat ="server" ControlToValidate ="UserName"
ErrorMessage ="必须填写“用户名”。" ToolTip ="必须填写“用户名”。" ValidationGroup ="Login1" > * </ asp:RequiredFieldValidator >
</ td >
</ tr >
< tr >
< td align ="right" >
< asp:Label ID ="PasswordLabel" runat ="server" AssociatedControlID ="Password" > 密码: </ asp:Label ></ td >
< td >
< asp:TextBox ID ="Password" runat ="server" TextMode ="Password" CssClass ="STYLE1" ></ asp:TextBox >
< asp:RequiredFieldValidator ID ="PasswordRequired" runat ="server" ControlToValidate ="Password"
ErrorMessage ="必须填写“密码”。" ToolTip ="必须填写“密码”。" ValidationGroup ="Login1" > * </ asp:RequiredFieldValidator >
</ td >
</ tr >
< tr >
< td align ="right" >
< asp:Label ID ="Label1" runat ="server" AssociatedControlID ="Password" > 验证码: </ asp:Label ></ td >
< td >
< asp:TextBox ID ="GetCode" runat ="server" CssClass ="STYLE2" ></ asp:TextBox >
< asp:RequiredFieldValidator ID ="RequiredFieldValidator1" runat ="server" ControlToValidate ="Password"
ErrorMessage ="必须填写“验证码”。" ToolTip ="必须填写“验证码”。" ValidationGroup ="Login1" > * </ asp:RequiredFieldValidator >< asp:Image ID ="Image1" runat ="server" ImageUrl ="~/include/GetValidate.aspx" ImageAlign ="Top"
alt ="看不清?点击更换" onclick ="this.src=this.src+'?'" />
</ td >
</ tr >
< tr >
< td align ="center" colspan ="2" style ="color: red" >
< asp:Literal ID ="FailureText" runat ="server" EnableViewState ="False" ></ asp:Literal >
</ td >
</ tr >
< tr >
< td align ="center" colspan ="2" >
< asp:Button ID ="LoginButton" runat ="server" CommandName ="Login" Text ="登录" ValidationGroup ="Login1" /></ td >
</ tr >
</ table >
</ td >
</ tr >
</ table >
</ LayoutTemplate >
</ asp:Login >
BorderWidth ="1px" Font-Names ="Verdana" Font-Size ="10pt" OnAuthenticate ="Login1_Authenticate" >
< TitleTextStyle BackColor ="#6B696B" Font-Bold ="True" ForeColor ="White" />
< LayoutTemplate >
< table border ="0" cellpadding ="1" cellspacing ="0" style ="border-collapse: collapse" >
< tr >
< td >
< table border ="0" cellpadding ="0" >
< tr >
< td align ="center" colspan ="2" style ="font-weight: bold; color: white; background-color: #6b696b" >
用户登录 </ td >
</ tr >
< tr >
< td align ="right" >
< asp:Label ID ="UserNameLabel" runat ="server" AssociatedControlID ="UserName" > 用户名: </ asp:Label ></ td >
< td >
< asp:TextBox ID ="UserName" runat ="server" CssClass ="STYLE1" ></ asp:TextBox >
< asp:RequiredFieldValidator ID ="UserNameRequired" runat ="server" ControlToValidate ="UserName"
ErrorMessage ="必须填写“用户名”。" ToolTip ="必须填写“用户名”。" ValidationGroup ="Login1" > * </ asp:RequiredFieldValidator >
</ td >
</ tr >
< tr >
< td align ="right" >
< asp:Label ID ="PasswordLabel" runat ="server" AssociatedControlID ="Password" > 密码: </ asp:Label ></ td >
< td >
< asp:TextBox ID ="Password" runat ="server" TextMode ="Password" CssClass ="STYLE1" ></ asp:TextBox >
< asp:RequiredFieldValidator ID ="PasswordRequired" runat ="server" ControlToValidate ="Password"
ErrorMessage ="必须填写“密码”。" ToolTip ="必须填写“密码”。" ValidationGroup ="Login1" > * </ asp:RequiredFieldValidator >
</ td >
</ tr >
< tr >
< td align ="right" >
< asp:Label ID ="Label1" runat ="server" AssociatedControlID ="Password" > 验证码: </ asp:Label ></ td >
< td >
< asp:TextBox ID ="GetCode" runat ="server" CssClass ="STYLE2" ></ asp:TextBox >
< asp:RequiredFieldValidator ID ="RequiredFieldValidator1" runat ="server" ControlToValidate ="Password"
ErrorMessage ="必须填写“验证码”。" ToolTip ="必须填写“验证码”。" ValidationGroup ="Login1" > * </ asp:RequiredFieldValidator >< asp:Image ID ="Image1" runat ="server" ImageUrl ="~/include/GetValidate.aspx" ImageAlign ="Top"
alt ="看不清?点击更换" onclick ="this.src=this.src+'?'" />
</ td >
</ tr >
< tr >
< td align ="center" colspan ="2" style ="color: red" >
< asp:Literal ID ="FailureText" runat ="server" EnableViewState ="False" ></ asp:Literal >
</ td >
</ tr >
< tr >
< td align ="center" colspan ="2" >
< asp:Button ID ="LoginButton" runat ="server" CommandName ="Login" Text ="登录" ValidationGroup ="Login1" /></ td >
</ tr >
</ table >
</ td >
</ tr >
</ table >
</ LayoutTemplate >
</ asp:Login >
三、后台代码
protected
void
Login1_Authenticate(
object
sender, AuthenticateEventArgs e)
{
TextBox GetCode = Login1.FindControl("GetCode") as TextBox;//获取登陆控件中验证码文本框值
if (Request.Cookies["CheckCode"].Value == null)
{
Response.Write(@"<script language=JavaScript>{window.alert('您的浏览器设置已被禁用 Cookies,您必须设置浏览器允许使用 Cookies 选项后才能使用本系统!');}</script>");
return;
}
else
{
if (String.Compare(Request.Cookies["CheckCode"].Value, GetCode.Text.ToString().Trim(), true) != 0)
{
Response.Write(@"<script language=JavaScript>{window.alert('验证码输入不正确!');}</script>");
return;
}
string UserLoginID = Login1.UserName.ToString().Trim().Replace("'", "").Replace("=", "");//得到输入的用户名
string UserLoginPwd = Login1.Password.ToString().Trim().Replace("'", "").Replace("=", "");//得到输入的密码
//得到md5值
string md5Pwd = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(UserLoginPwd, "md5").ToLower();
string mySql = "select * from [User] where [sLoginID]='" + UserLoginID + "' and [LoginPWD]='" + md5Pwd + "'";
//下面部署自己的逻辑处理,以下仅供参考
DBConn myDB = new DBConn();
try
{
SqlDataReader Rs = myDB.getDataReader(mySql);
if (!Rs.Read())
{
e.Authenticated = false;//登录不通过
}
else
{
Session["UserLoginID"] = UserLoginID;
Session["UserLoginPwd"] = UserLoginPwd;
e.Authenticated = true;//登录通过
Response.Redirect("index.aspx");
}
}
catch (Exception ex)
{
Response.Write("数据库错误,错误原因:" + ex.Message);
Response.End();
}
}
}
{
TextBox GetCode = Login1.FindControl("GetCode") as TextBox;//获取登陆控件中验证码文本框值
if (Request.Cookies["CheckCode"].Value == null)
{
Response.Write(@"<script language=JavaScript>{window.alert('您的浏览器设置已被禁用 Cookies,您必须设置浏览器允许使用 Cookies 选项后才能使用本系统!');}</script>");
return;
}
else
{
if (String.Compare(Request.Cookies["CheckCode"].Value, GetCode.Text.ToString().Trim(), true) != 0)
{
Response.Write(@"<script language=JavaScript>{window.alert('验证码输入不正确!');}</script>");
return;
}
string UserLoginID = Login1.UserName.ToString().Trim().Replace("'", "").Replace("=", "");//得到输入的用户名
string UserLoginPwd = Login1.Password.ToString().Trim().Replace("'", "").Replace("=", "");//得到输入的密码
//得到md5值
string md5Pwd = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(UserLoginPwd, "md5").ToLower();
string mySql = "select * from [User] where [sLoginID]='" + UserLoginID + "' and [LoginPWD]='" + md5Pwd + "'";
//下面部署自己的逻辑处理,以下仅供参考
DBConn myDB = new DBConn();
try
{
SqlDataReader Rs = myDB.getDataReader(mySql);
if (!Rs.Read())
{
e.Authenticated = false;//登录不通过
}
else
{
Session["UserLoginID"] = UserLoginID;
Session["UserLoginPwd"] = UserLoginPwd;
e.Authenticated = true;//登录通过
Response.Redirect("index.aspx");
}
}
catch (Exception ex)
{
Response.Write("数据库错误,错误原因:" + ex.Message);
Response.End();
}
}
}
四、关于验证码可以本Blog的随笔中找到,地址为:
http://www.cnblogs.com/zm235/archive/2006/10/02/520233.html