您当前的位置:首页 > 文章教程 > 计算机与互联网 > 网络编程

21.5用户登录验证模块

21.5用户登录验证模块

登录验证的原理很简单,具体说明如下。

(1)设计一个表单供用户输入登录数据。

(2)获取用户的登录数据后,与数据库中的合法用户数据进行比较。如果完全一致,则登录聊天系统;如果不一致,则不能登录系统。

用户登录表单页面文件Login.aspx的功能是提供用户登录表单,供用户输入登录数据。其具体实现过程如下。

(1)插入1个TextBox控件,供用户输入用户名。

(2)插入2个RequiredFieldValidator控件,用于验证输入用户名的合法性。

(3)调用1个Ajax程序集中的TextBoxWatermarkExtender控件,实现用户名验证。

(4)调用2个Ajax程序集中的ValidatorCalloutExtender控件,实现用户名的多样式验证。

(5)插入1个TextBox控件,供用户输入登录密码。

(6)插入2个RequiredFieldValidator控件,用于验证输入密码的合法性。

(7)调用3个Ajax程序集中的ValidatorCalloutExtender控件,实现密码的多样式验证。

(8)调用文件Yanzhengma.aspx,实现验证码显示。

(9)插入2个Button控件,分别用于激活验证处理事件和取消输入。

登录验证处理页面文件Login.aspx.cs的功能是获取登录表单数据,并将合法用户的登录信息保存到用户列表数组中。其具体实现过程如下。

(1)引入命名空间。

(2)Page_Load载入初始化。

(3)定义事件btnLogin_Click(object sender,EventArgs e)。

(4)判断输入验证码的合法性。

(5)判断登录数据是否合法。

(6)读取用户的登录信息并保存处理。

(7)重定向到系统主页。

(8)输入框清空处理。

上述操作实现的具体运行流程如图21-5所示。

图21-5 登录验证处理运行流程图

文件Login.aspx.cs的具体实现代码如下。

using ASPNETAJAXWeb.AjaxChat;
using ASPNETAJAXWeb.ValidateCode.Page;
using System.Data.SqlClient;
public partial class UserLogin : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
  }
  protected void btnLogin_Click(object sender,EventArgs e)
  {
    if(Session[ValidateCode.VALIDATECODEKEY] != null)
    { //验证验证码是否相等
      if(tbCode.Text != Session[ValidateCode.VALIDATECODEKEY].ToString())
      {
        lbMessage.Text = "验证码输入错误,请重新输入";
        return;
      }
      //判断用户的密码和名称是否正确
      Chat chat = new Chat();
      SqlDataReader dr = chat.GetUser(tbUsername.Text,tbPassword.Text);
      if(dr == null)return;
      bool isLogin = false;
      if(dr.Read())
      { //读取用户的登录信息并保存
       UserInfo ui = new UserInfo();
       ui.UserID = Int32.Parse(dr["ID"].ToString());
       ui.Username = tbUsername.Text;
       //保存到Session中
       Session["UserID"] = ui.UserID;
       Session["Username"] = ui.Username;
       //保存到全局信息中
       ASP.global_asax.Users.Add(ui);
       isLogin = true;
      }
      dr.Close();
      //如果用户登录成功
      if(isLogin == true)
      {
       Response.Redirect("~/Default.aspx");
       return;
      }
    }
  }
  protected void btnReturn_Click(object sender,EventArgs e)
  { //清空各种输入框中的信息
    tbUsername.Text = tbPassword.Text = tbCode.Text = string.Empty;
  }
}