在自定义身份验证表单中验证用户凭据

时间:2012-10-24 14:57:48

标签: c# login

我的登录系统存在问题。

输入有效的用户名和密码后,我可以转到下一个表单。

当我输入错误的用户名和正确的密码时,我仍然可以转到下一个表单。

正确的用户名和错误的密码我仍然可以转到下一个表单。

如果我的用户名或密码错误,没有让下一步的正确代码是什么?

这是我的代码。

private void btnEnter_Click(object sender, EventArgs e)        
{
    if (tbUsername.Text == "username")              
    {                 
        AdminMainMenu x = new AdminMainMenu();
        x.Show();
        t.Play();           
        this.Dispose();          
    }         
    else
    {
        SystemSounds.Hand.Play();
        MessageBox.Show("Invalid Username! ", "Error");
    }  

    if (tbPassword.Text == "password")
    {
        AdminMainMenu x = new AdminMainMenu();
        x.Show();
        t.Play();
        this.Dispose();
    }
    else
    {
        SystemSounds.Hand.Play();
        MessageBox.Show("Invalid Password! ", "Error");
    }   
}

2 个答案:

答案 0 :(得分:2)

我只能猜测你在问什么,但是如果你想在显示表单之前用户名和密码都是正确的,请改用

if (tbUsername.Text == "username")
{
    if(tbPassword.Text == "password")
    {
        AdminMainMenu x = new AdminMainMenu();
        x.Show();
        t.Play();
        this.Dispose();
    }
    else
    {
        MessageBox.Show("Wrong password", "Error");
    }
}
else
{
    if(tbPassword.Text == "password")
    {
        MessageBox.Show("Wrong username", "Error");
    }
    else
    {
        MessageBox.Show("Wrong username and password", "Error");
    }
}

答案 1 :(得分:0)

您可以将密码检查if块嵌套在成功的用户名if块中:

private void btnEnter_Click(object sender, EventArgs e)
{
    if (tbUsername.Text == "username")
    {
        if (tbPassword.Text == "password")
        {
            AdminMainMenu x = new AdminMainMenu();
            x.Show();
            t.Play();
            this.Dispose();
        }
        else
        {
            SystemSounds.Hand.Play();
            MessageBox.Show("Invalid Password! ", "Error");
        }    
    }
    else
    {
        SystemSounds.Hand.Play();
        MessageBox.Show("Invalid Username! ", "Error");
    }  
}

当用户名错误时,用户名检查的else块正在执行,然后代码继续进行密码检查。您需要确保仅在检查用户名和密码后才显示表单。

或者,如果用户名或密码不正确,您可以单独检查点击事件和return

private void btnEnter_Click(object sender, EventArgs e)
{
    if (tbUsername.Text != "username")
    {
        SystemSounds.Hand.Play();
        MessageBox.Show("Invalid Username! ", "Error");
        return;
    }

    if (tbPassword.Text != "password")
    {
        SystemSounds.Hand.Play();
        MessageBox.Show("Invalid Password! ", "Error");
        return;
    } 

    //If we got here in code execution, then both username and password are correct
    AdminMainMenu x = new AdminMainMenu();
    x.Show();
    t.Play();
    this.Dispose();
}