如何在激活asp.net c#之前阻止用户登录

时间:2016-06-11 16:23:43

标签: c# asp.net c#-4.0 c#-3.0

我是C#的新手。我的数据库默认值为0。

中有激活数据类型位

我的问题是如何在激活电子邮件发送之前阻止用户登录 注册完成后,数据库中的激活为空,但仍然可以登录用户如何解决此问题请帮助。

这是我的代码:

protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Loginbtn_Click(object sender, EventArgs e)
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegisterConnectionString"].ConnectionString);
        conn.Open();
        string checkuser = "select count(*) from UserData where UserName='" + UserName.Text + "'";
        SqlCommand com = new SqlCommand(checkuser, conn);
        int temp = Convert.ToInt32(com.ExecuteScalar().ToString());
        conn.Close();
        if (temp == 1)
        {
            conn.Open();
            string checkPasswordQuery = "select password from UserData where UserName='" + UserName.Text + "'";
            SqlCommand passComm = new SqlCommand(checkPasswordQuery, conn);
            string password = passComm.ExecuteScalar().ToString().Replace(" ", "");

            if (password == Password.Text && UserName.Text == "Admin" )
            {
                Session["New"] = UserName.Text;
                Response.Redirect("~/Admin/UserManager.aspx");
            }
            if (password == Password.Text)
            {
                Session["New"] = UserName.Text;
                Response.Redirect("~/Account/UserPage.aspx");
            }
            else
            {
                invalidlbl.Text = "Please check your username and password";
            }
        }
    }

这是我的数据库的图像:

1 个答案:

答案 0 :(得分:0)

你说激活在数据库中是空的。因此,当用户尝试登录时,请抓取并检查数据库中的activation是否仍为null,如果是,那么只需向用户发送消息,说明首先激活您的帐户和将他/她重定向到主页。

编辑:根据您的评论,不会给您完整的代码,但这是我说的一个例子。顺便说一句,考虑使用SQL参数来避免SQL注入攻击。

        string checkuser = "select count(*) from UserData where UserName=@uname and activation != null";
        SqlCommand com = new SqlCommand(checkuser, conn);
        com.Parameters.Add("@uname", SqlDbType.VarChar).Value = UserName.Text.Trim();
        int temp = Convert.ToInt32(com.ExecuteScalar());

if(temp > 0)
{
  // do processing
}
else
{
  // not activated ... throw alert
}