一。在使用asp.net的Logig控件设计登陆方案时,如果您想创建自己的身份验证逻辑,则可以处理Login控件的Authenticate事件并添加自定义身份验证代码。
当用户输入用户名称和密码之后,并单击登陆按钮,将触发事件MyLogin_LoggingIn(object sender,LoginCancelEventArgs e)实现用户登录功能。其中函数SqlDataReader GetUserLogin(string sUserName,string sPassword)根据用户名称和密码从数据库ShoppingDB中获取用户登录信息。
public
SqlDataReader GetUserLogin(
string
sUserName,
string
sPassword)
... {
SqlConnection myConnection=new SqlConnection(ConfigurationManager.ConnectionStrings["SQLCONNECTIONSTRING"].ConnectionString);
string cmdText=""select UserID from Users where UserName='"+sUserName.ToString()+"' and Password="'+sPassword.ToString()+'"";
SqlCommand myCommand=new SqlCommand(cmdText,myConnection)
//定义DataReader
SqlDataReader dr=null;
try
...{
myConnection.Open();
dr=myCommand.ExecuteReader(CommandBehavior.CloseConnection);
}
catch(SqlException ex)
...{
throw new Exception(ex.Message,ex);
//或者用Response.Write(ex.Message+"<br>");
}
return dr;
}
... {
SqlConnection myConnection=new SqlConnection(ConfigurationManager.ConnectionStrings["SQLCONNECTIONSTRING"].ConnectionString);
string cmdText=""select UserID from Users where UserName='"+sUserName.ToString()+"' and Password="'+sPassword.ToString()+'"";
SqlCommand myCommand=new SqlCommand(cmdText,myConnection)
//定义DataReader
SqlDataReader dr=null;
try
...{
myConnection.Open();
dr=myCommand.ExecuteReader(CommandBehavior.CloseConnection);
}
catch(SqlException ex)
...{
throw new Exception(ex.Message,ex);
//或者用Response.Write(ex.Message+"<br>");
}
return dr;
}
protected
void
MyLogin_LoggingIn(
object
sender,LoginCancelEventArgs e)
... {
SqlDataReader dr= GetUserLogin(MyLogin.UserName,MyLogin.Password);
string sUserID="";
if(dr.Read())
...{
sUserID=dr["UserID"].ToString();//获取登录信息
}
dr.Close();
if(sUserID.Length>0)
...{//登录成功
Response.Redirect("~/main.aspx");
}
}
... {
SqlDataReader dr= GetUserLogin(MyLogin.UserName,MyLogin.Password);
string sUserID="";
if(dr.Read())
...{
sUserID=dr["UserID"].ToString();//获取登录信息
}
dr.Close();
if(sUserID.Length>0)
...{//登录成功
Response.Redirect("~/main.aspx");
}
}
二。当自行创建登录界面,不用控件时。SqlDataReader GetUserLogin(string sUserName,string sPassword)事件与使用控件是一样,只是点击登录按钮时,多了一些判断代码。
代码如下:
protected
void
LoginBtn_Click(
object
sender,EventArgs e)
... {
if(UserName.Text==nullUserName.Text==""||UserName.Text.Length<=0)
...{
ShowMessage("用户名称为空,请输入用户名称!");
return;
}
if(Password.Text==nullPassword.Text==""||Password.Text.Length<=0)
...{
ShowMessage("用户密码为空,请输入用户密码!");
return;
}
string userId="";
//定义类并获取用户的登录信息
SqlDataReader recu=GetUserLogin(UserName.Text.Trim(),Password.Text.Trim());
//判断用户是否合法
if(recu.Read())...{userId=recu["UserID"].ToString();}
recu.Close();
//验证用户合法性,并跳转到系统平台
if((userId!=null)&&(userId!=""))
...{
Session["UserID"]=userId;
ShowMessage("用户登录成功!!!");
}
else
...{
ShowMessage("你输入的用户名称/密码有误,请重新输入!");
}
}
// h函数ShowMessage(string sMsg)向页面显示操作结果信息,它的程序代码如下:
private void ShowMessage( string sMsg)
... {
Response.Write("<script>window.alert('"+sMsg+"')</script>");
}
... {
if(UserName.Text==nullUserName.Text==""||UserName.Text.Length<=0)
...{
ShowMessage("用户名称为空,请输入用户名称!");
return;
}
if(Password.Text==nullPassword.Text==""||Password.Text.Length<=0)
...{
ShowMessage("用户密码为空,请输入用户密码!");
return;
}
string userId="";
//定义类并获取用户的登录信息
SqlDataReader recu=GetUserLogin(UserName.Text.Trim(),Password.Text.Trim());
//判断用户是否合法
if(recu.Read())...{userId=recu["UserID"].ToString();}
recu.Close();
//验证用户合法性,并跳转到系统平台
if((userId!=null)&&(userId!=""))
...{
Session["UserID"]=userId;
ShowMessage("用户登录成功!!!");
}
else
...{
ShowMessage("你输入的用户名称/密码有误,请重新输入!");
}
}
// h函数ShowMessage(string sMsg)向页面显示操作结果信息,它的程序代码如下:
private void ShowMessage( string sMsg)
... {
Response.Write("<script>window.alert('"+sMsg+"')</script>");
}