繁体   English   中英

使用ASP.NET针对MySQL数据库进行用户/密码验证

[英]User/Password Verification using ASP.NET against a MySQL database

强文本

protected void btnLogin_Click(object sender, EventArgs e)
    {
        string connectionString = ConfigurationManager.ConnectionStrings["moverschoiceConnectionString"].ConnectionString;
        OdbcConnection conn = new OdbcConnection(connectionString);
        conn.Open();
        OdbcCommand cmd = new OdbcCommand();
        cmd.Connection = conn;
        cmd.CommandText = "select Email, Password from brokercenter where Email = '" + txtLoginEmail.Text + "'";
        OdbcDataReader reader = cmd.ExecuteReader();
        reader.Read();
        if (reader.HasRows)
        {
            if (reader["Password"].ToString() == txtLoginPassword.Text)
            {
                reader.Close();
                Response.Redirect("BrokerResources.aspx");
            }
            else
            {
                lblLoginError.Text = "Invalid Password";
            }
        }
        else
        {
            lblLoginError.Text = "Invalid Email Address";
        }

    }

请理解,我刚刚完成入门级C#的学习,并被该公司聘请来开发站点。 以前的.NET家伙刚刚离开,所以我不知道他在哪里做什么。 这是我在此站点上的第一个问题,因此,如果格式不正确,我深表歉意。 我对此并不陌生,可以使用任何帮助。 简而言之,我有两个文本框和一个按钮。 我可以让用户创建一个帐户,该帐户进入dB,但是我无法获得要验证的电子邮件(用户名)和密码。 当我单击按钮时,什么也没有发生。 该公司有许多站点,因此我试图从另一个登录按钮进行复制和粘贴,并更改我需要匹配当前站点信息的内容,但没有进行任何更改。 我检查了大约两天,并尝试了许多版本的登录代码,但仍然没有。 我不知道此系统上已经安装了什么。 同样,我是入门级的(实际上是在10号刚完成的课程),所以请使用小写单词。
提前致谢!

单击按钮后,应触发btnLogin_Click() btnLogin_Click之后,您应该重定向到另一个页面Response.Redirect或对用户lblLoginError.Text =的反馈。

如果没有任何反应,我想btnLogin_Click()未链接到按钮:在aspx页面上,您应该具有<asp:Button ID="btnLogin" runat="server" onclick="btnLogin_Click" ..>

无论如何,在btnLogin_Click()内的任何地方放置一个断点,开始调试并查看是否触发!

试试这个代码可以解决你的问题

protected void btnLogin_Click(object sender, EventArgs e)
{
   string connectionString = ConfigurationManager.ConnectionStrings["moverschoiceConnectionString"].ConnectionString;
   OdbcConnection conn = new OdbcConnection(connectionString);
  conn.Open();
  OdbcCommand cmd = new OdbcCommand();
  cmd.Connection = conn;
  cmd.CommandText = "select Email, Password from brokercenter where Email = '" + txtLoginEmail.Text + "'";
  OdbcDataReader reader = cmd.ExecuteReader();
  While(reader.Read())
  {
    if (reader["Password"].ToString() == txtLoginPassword.Text)
    {
        reader.Close();
        Response.Redirect("BrokerResources.aspx");
    }
    else
    {
        lblLoginError.Text = "Invalid Password";
    }
  }
  lblLoginError.Text = "Invalid Email Address"; 
  reader.Close();
}

由于您是新手,所以我想帮助您了解有关此代码的一些知识。 我将概述代码的功能:

  • 从用于配置应用程序的内置APS.net中获取用于告诉应用程序如何连接和验证数据库的连接字符串。
  • 与sql数据库的连接正在初始化和打开
  • 问题1-正在打开连接,但是如果发生任何故障,则连接没有关闭,请将连接包装在用块中以进行保护
  • 正在构造一个命令来查询SQL Server
  • 问题2-连接字符串未使用绑定参数,这意味着它容易受到SQL注入攻击,这是几年前的常见错误
  • 正在执行命令以获取符合查询条件的行集
  • 查询正在查找与电子邮件等于在文本框中输入的电子邮件地址的行匹配的行
  • 检查阅读器是否有任何结果,如果没有,则返回有关电子邮件的错误
  • 问题3-此处的连接未关闭,这将在以后导致问题,请参阅问题1
  • 由于我们有一行,因此请检查行的密码值以与输入的内容进行比较
  • 问题4-连接不会再次因错误而关闭,请参阅问题1
  • 问题5-密码为纯文本格式,应予以保护
  • 如果密码匹配,请重定向到新页面
  • 潜在问题6-由于没有采取任何措施来标记用户已登录,因此您可能可以跳过登录页面,这是安全性受到破坏的

另外,正如已经提到的那样,检查Asp.net脚本中的按钮单击事件,方法名称需要与页面本身上指定的名称匹配以进行连接。

希望这可以为您提供一些工作,并希望它将指导您的学习。

祝一切顺利

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM