检查数据库中的用户类型

本文关键字:用户 类型 数据库 检查 | 更新日期: 2023-09-27 18:11:19

我想检查用户是Staff还是Admin。如果用户是员工,我想禁用或隐藏其他表单的一些按钮或功能。

loginsql中的SELECT Username FROM tblAccount,以便我可以向其他表单显示谁是当前用户。

private void btnConfirm_Click(object sender, EventArgs e)
{
    //DO: User authentacation
    con.Open();
    string loginsql = "SELECT Username FROM tblAccount WHERE Username = '" + txtUser.Text + "' COLLATE SQL_Latin1_General_CP1_CS_AS AND Password = '" + txtPass.Text + "' COLLATE SQL_Latin1_General_CP1_CS_AS AND EmpStatus = 'Active'";
    SqlDataAdapter loginda = new SqlDataAdapter(loginsql, con);
    DataTable logindt = new System.Data.DataTable();
    loginda.Fill(logindt);
    if (logindt.Rows.Count == 1)
    {
        MessageBox.Show("Login Successfully", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
        HomeForm home = new HomeForm(logindt.Rows[0][0].ToString());
        home.Show();
        this.Hide();
    }
    else if (txtUser.Text == "" && txtPass.Text == "")
    {
        MessageBox.Show("Enter your username and password", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    else if(txtUser.Text == "")
    {
        MessageBox.Show("Enter your username", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    else if(txtPass.Text == "")
    {
        MessageBox.Show("Enter your password", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    else
    {
        MessageBox.Show("Invalid Username and Password", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        txtUser.Clear();
        txtPass.Clear();
        txtUser.Focus();
    }
    con.Close();
}

检查数据库中的用户类型

你应该创建

  1. 角色表id->foreignKey loginsql的id角色(类型为Boolean)->例如Staff=0或Admin=1

  2. officiate表,提供一些访问,如删除插入更新…为用户当用户登录时,您现在可以查看他的角色(是管理员还是员工?)以及他是否有权查看此页面!

再创建两个表,tblAccount已经存在,其中包含了用户的信息,现在再创建两个名为tblRoles &;tblAccountRoles。tblRoles将包含所有角色及其主键,例如1-Admin,2-staff等。tblAccountRoles将包含分配给所有用户的角色,例如:1- jeff - 1(admin), 2-zepp -2(staff)等等。现在,在您的代码中,首先通过查询tblAccount表检查用户的登录是否成功,如果成功,则检查tblAccountRoles表并获取登录用户的id。您将获得1为管理员,2为员工,然后您可以将acc编码为您获得的角色id。如果用户的角色id是admin,即1,则可以显示所有控件。你的问题很基本,很容易在网上搜到。做更多的搜索,你会发现很多解决这个问题的方法。

    string loginsql = "SELECT Username, UserType FROM tblAccount WHERE Username = '" + txtUser.Text + "' COLLATE SQL_Latin1_General_CP1_CS_AS AND Password = '" + txtPass.Text + "' COLLATE SQL_Latin1_General_CP1_CS_AS AND EmpStatus = 'Active'";
    SqlDataAdapter loginda = new SqlDataAdapter(loginsql, con);
    DataTable logindt = new System.Data.DataTable();
    loginda.Fill(logindt);
    if (logindt.Rows.Count == 1)
        {
            Session["UserType"] = logindt.Rows[0][1].ToString();
            MessageBox.Show("Login Successfully", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
            HomeForm home = new HomeForm(logindt.Rows[0][0].ToString());
            home.Show();
            this.Hide();
        }

当你想使用UserType来隐藏一些信息时,使用以下命令:

string userType = Session["UserType"].ToString();
if(userType == "Staff")
{
//Show Some data related to Staff
}
else if (userType == "Admin")
{
//Show Some Data related to Admin
}

我还没有测试代码,只是把我的代码添加到你现有的,所以请做测试,让我知道。但我给出了如何使用现有表等实现它的基本概念。但你必须在数据库表中有'UserType'列才能让它工作。

最好的方法是在Database中创建一个Role表:

Table Roles
Role_ID | Role_Desc

关系的另一个表

Table User_Roles
User_ID | Role_ID

然后将User_ID和Role_ID存储在第三个表中,并访问它以获得相应的角色。如果有任何疑问,请告诉我。