刘杰瑞 2021-09-04 23:19 采纳率: 90.9%
浏览 65
已结题

asp.net webform 如何做一个能判断管理员权限的登录?界面

主要是如何判断管理员权限,让非管理员用户,不能对数据库修改删除添加。怎么能禁用这些功能呢?一般是直接不让他跳转到可以操作数据库的页面还是有什么方法能禁用这种权限?其中还用了gridview对数据库建表,gridview的编辑删除,也能在后端进行判断吗?

  • 写回答

2条回答 默认 最新

  • Yijing Sun 2021-09-06 10:42
    关注

    您好,
    首先请问您这个项目是在本地运行仅为您个人使用还是需要连接到网站给全国人民的用户是使用的?
    如果您是个人使用,那么有一个解决办法:在创建数据库表的时候添加一列身份认证,标记该用户是管理员或是非管理员。当您登录时,在后台可以检查是什么身份登录,随即跳转到对应的页面。如下:

    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 的身份认证。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月14日
  • 已采纳回答 9月6日
  • 修改了问题 9月5日
  • 创建了问题 9月4日

悬赏问题

  • ¥18 深度学习tensorflow1,ssdv1,coco数据集训练一个模型
  • ¥100 关于注册表摄像头和麦克风的问题
  • ¥30 代码本地运行正常,但是TOMCAT部署时闪退
  • ¥15 关于#python#的问题
  • ¥15 主机可以ping通路由器但是连不上网怎么办
  • ¥15 数据库一张以时间排好序的表中,找出多次相邻的那些行
  • ¥50 关于DynamoRIO处理多线程程序时候的问题
  • ¥15 kubeadm部署k8s出错
  • ¥15 Abaqus打不开cae文件怎么办?
  • ¥15 小程序准备上线,软件开发公司需要提供哪些资料给甲方