主要是如何判断管理员权限,让非管理员用户,不能对数据库修改删除添加。怎么能禁用这些功能呢?一般是直接不让他跳转到可以操作数据库的页面还是有什么方法能禁用这种权限?其中还用了gridview对数据库建表,gridview的编辑删除,也能在后端进行判断吗?
您好,
首先请问您这个项目是在本地运行仅为您个人使用还是需要连接到网站给全国人民的用户是使用的?
如果您是个人使用,那么有一个解决办法:在创建数据库表的时候添加一列身份认证,标记该用户是管理员或是非管理员。当您登录时,在后台可以检查是什么身份登录,随即跳转到对应的页面。如下:
if (DropDownList1.Text == "管理员")
{
SqlConnection con = new SqlConnection("Data Source=PC-PC;Initial Catalog=TunnelMonitor;Integrated Security=True");
con.Open();
//定义字符串sql,其含义为从数据表中查找列LoginName中TextBox1.Text的记录,列Password中TextBox2.Text的记录
string sql = "select * from AdminInfo where LoginName= '" + TextBox1.Text + "' and Password= '" + TextBox2.Text + "' ";
//定义数据适配器da,将da的数据填充至Dataset类的对象dt中
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(sql, con);
da.Fill(dt);
//如果记录为TextBox1.Text和TextBox2.Text的行已经存在
if (dt.Rows.Count > 0)
{
//将TextBox1.Text的信息暂存
Session["LoginName"] = TextBox1.Text;
string count = Session["LoginName"].ToString();
//如果以管理员账号进,就转到AdminPage.aspx
Response.Redirect("AdminPage.aspx");
}
//用户输入的内容不存在于数据库中
else
{
Label1.Text = "您输入的用户名或密码错误,登录失败!";
}
con.Close();
}
if (DropDownList1.Text == "用户")
{
SqlConnection con = new SqlConnection("Data Source=PC-PC;Initial Catalog=TunnelMonitor;Integrated Security=True");
con.Open();
//定义字符串sql,其含义为从数据表中查找列LoginName中TextBox1.Text的记录,列Password中TextBox2.Text的记录
string sql = "select * from UserInfo where UserName= '" + TextBox1.Text + "' and Password= '" + TextBox2.Text + "' ";
//定义数据适配器da,将da的数据填充至Dataset类的对象dt中
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(sql, con);
da.Fill(dt);
//如果记录为TextBox1.Text和TextBox2.Text的行已经存在
if (dt.Rows.Count > 0)
{
//将TextBox1.Text的信息暂存
Session["UserName"] = TextBox1.Text;
string count = Session["UserName"].ToString();
//如果不是管理员账号,即转入
Response.Redirect("UserPage.aspx");
}
//用户输入的内容不存在于数据库中
else
{
Label1.Text = "您输入的用户名或密码错误,登录失败!";
}
con.Close();
}
管理员和非管理员需要调转到不同的页面。 如果您不想添加过多的重复页面,您可以做一个母板页,把您需要共享的页面做成母板,各自不同的部分做成子页。
如果您的网站是需要发布出来的,那我建议您可以使用azure 的身份认证。
可以细化到按钮,但也要额外的写不少代码。我建议你还是根据登录用户判断然后跳转到不同的页面。